mirror of
https://gitlab.winehq.org/wine/vkd3d.git
synced 2024-11-21 16:46:41 -08:00
include: Get rid of the RB_FOR_EACH* macros.
They're largely unused, and RB_FOR_EACH_ENTRY_DESTRUCTOR is broken because it uses WINE_RB_ENTRY_VALUE which doesn't exist in vkd3d.
This commit is contained in:
parent
90f26759b5
commit
021eb28584
Notes:
Henri Verbeet
2024-06-14 00:05:13 +02:00
Approved-by: Giovanni Mascellani (@giomasce) Approved-by: Henri Verbeet (@hverbeet) Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/878
@ -126,34 +126,17 @@ static inline struct rb_entry *rb_postorder_next(struct rb_entry *iter)
|
|||||||
return rb_postorder_head(iter->parent->right);
|
return rb_postorder_head(iter->parent->right);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* iterate through the tree */
|
|
||||||
#define RB_FOR_EACH(cursor, tree) \
|
|
||||||
for ((cursor) = rb_head((tree)->root); (cursor); (cursor) = rb_next(cursor))
|
|
||||||
|
|
||||||
/* iterate through the tree using a tree entry */
|
|
||||||
#define RB_FOR_EACH_ENTRY(elem, tree, type, field) \
|
|
||||||
for ((elem) = RB_ENTRY_VALUE(rb_head((tree)->root), type, field); \
|
|
||||||
(elem) != RB_ENTRY_VALUE(0, type, field); \
|
|
||||||
(elem) = RB_ENTRY_VALUE(rb_next(&elem->field), type, field))
|
|
||||||
|
|
||||||
/* iterate through the tree using using postorder, making it safe to free the entry */
|
|
||||||
#define RB_FOR_EACH_DESTRUCTOR(cursor, cursor2, tree) \
|
|
||||||
for ((cursor) = rb_postorder_head((tree)->root); \
|
|
||||||
(cursor) && (((cursor2) = rb_postorder_next(cursor)) || 1); \
|
|
||||||
(cursor) = (cursor2))
|
|
||||||
|
|
||||||
/* iterate through the tree using a tree entry and postorder, making it safe to free the entry */
|
|
||||||
#define RB_FOR_EACH_ENTRY_DESTRUCTOR(elem, elem2, tree, type, field) \
|
|
||||||
for ((elem) = RB_ENTRY_VALUE(rb_postorder_head((tree)->root), type, field); \
|
|
||||||
(elem) != WINE_RB_ENTRY_VALUE(0, type, field) \
|
|
||||||
&& (((elem2) = RB_ENTRY_VALUE(rb_postorder_next(&(elem)->field), type, field)) || 1); \
|
|
||||||
(elem) = (elem2))
|
|
||||||
|
|
||||||
|
|
||||||
static inline void rb_postorder(struct rb_tree *tree, rb_traverse_func *callback, void *context)
|
static inline void rb_postorder(struct rb_tree *tree, rb_traverse_func *callback, void *context)
|
||||||
{
|
{
|
||||||
struct rb_entry *iter, *next;
|
struct rb_entry *entry = rb_postorder_head(tree->root);
|
||||||
RB_FOR_EACH_DESTRUCTOR(iter, next, tree) callback(iter, context);
|
struct rb_entry *next;
|
||||||
|
|
||||||
|
while (entry)
|
||||||
|
{
|
||||||
|
next = rb_postorder_next(entry);
|
||||||
|
callback(entry, context);
|
||||||
|
entry = next;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void rb_init(struct rb_tree *tree, rb_compare_func compare)
|
static inline void rb_init(struct rb_tree *tree, rb_compare_func compare)
|
||||||
@ -164,8 +147,13 @@ static inline void rb_init(struct rb_tree *tree, rb_compare_func compare)
|
|||||||
|
|
||||||
static inline void rb_for_each_entry(struct rb_tree *tree, rb_traverse_func *callback, void *context)
|
static inline void rb_for_each_entry(struct rb_tree *tree, rb_traverse_func *callback, void *context)
|
||||||
{
|
{
|
||||||
struct rb_entry *iter;
|
struct rb_entry *entry = rb_head(tree->root);
|
||||||
RB_FOR_EACH(iter, tree) callback(iter, context);
|
|
||||||
|
while (entry)
|
||||||
|
{
|
||||||
|
callback(entry, context);
|
||||||
|
entry = rb_next(entry);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void rb_clear(struct rb_tree *tree, rb_traverse_func *callback, void *context)
|
static inline void rb_clear(struct rb_tree *tree, rb_traverse_func *callback, void *context)
|
||||||
|
Loading…
Reference in New Issue
Block a user