vlist: add more macros for loop iteration
authorYousong Zhou <yszhou4tech@gmail.com>
Tue, 29 Oct 2019 07:24:20 +0000 (07:24 +0000)
committerYousong Zhou <yszhou4tech@gmail.com>
Tue, 29 Oct 2019 13:07:38 +0000 (13:07 +0000)
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
vlist.h

diff --git a/vlist.h b/vlist.h
index 8170abf7400985f17e50b254da6dceb89d223f8a..ff6b138c19b7a3748dfae18db518b47f18a199cb 100644 (file)
--- a/vlist.h
+++ b/vlist.h
@@ -72,4 +72,19 @@ void vlist_flush_all(struct vlist_tree *tree);
 #define vlist_for_each_element(tree, element, node_member) \
        avl_for_each_element(&(tree)->avl, element, node_member.avl)
 
+#define vlist_for_each_element_reverse(tree, element, node_member) \
+       avl_for_each_element_reverse(&(tree)->avl, element, node_member.avl)
+
+#define vlist_for_first_to_element(tree, last, element, node_member) \
+       avl_for_element_range(avl_first_element(&(tree)->avl, element, node_member.avl), last, element, node_member.avl)
+
+#define vlist_for_first_to_element_reverse(tree, last, element, node_member) \
+       avl_for_element_range_reverse(avl_first_element(&(tree)->avl, element, node_member.avl), last, element, node_member.avl)
+
+#define vlist_for_element_to_last(tree, first, element, node_member) \
+       avl_for_element_range(first, avl_last_element(&(tree)->avl, element, node_member.avl), element, node_member.avl)
+
+#define vlist_for_element_to_last_reverse(tree, first, element, node_member) \
+       avl_for_element_range_reverse(first, avl_last_element(&(tree)->avl, element, node_member.avl), element, node_member.avl)
+
 #endif