From 301303911dded723b7eda4d6a4a933b22d2c1b60 Mon Sep 17 00:00:00 2001 From: Yousong Zhou Date: Tue, 29 Oct 2019 07:24:20 +0000 Subject: [PATCH] vlist: add more macros for loop iteration Signed-off-by: Yousong Zhou --- vlist.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/vlist.h b/vlist.h index 8170abf..ff6b138 100644 --- 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