43 #ifndef UTIL_RBTREE_H_ 44 #define UTIL_RBTREE_H_ 69 #define RBTREE_NULL &rbtree_null_node 87 int (*
cmp) (
const void *,
const void *);
173 #define RBTREE_FOR(node, type, rbtree) \ 174 for(node=(type)rbtree_first(rbtree); \ 175 (rbnode_type*)node != RBTREE_NULL; \ 176 node = (type)rbtree_next((rbnode_type*)node)) rbnode_type rbtree_null_node
rbnode_type * rbtree_next(rbnode_type *rbtree)
int(* cmp)(const void *, const void *)
rbnode_type * rbtree_previous(rbnode_type *rbtree)
rbnode_type * rbtree_first(rbtree_type *rbtree)
void traverse_postorder(rbtree_type *tree, void(*func)(rbnode_type *, void *), void *arg)
rbnode_type * rbtree_search(rbtree_type *rbtree, const void *key)
rbtree_type * rbtree_create(int(*cmpf)(const void *, const void *))
rbnode_type * rbtree_last(rbtree_type *rbtree)
rbnode_type * rbtree_insert(rbtree_type *rbtree, rbnode_type *data)
void rbtree_init(rbtree_type *rbtree, int(*cmpf)(const void *, const void *))
rbnode_type * rbtree_delete(rbtree_type *rbtree, const void *key)
int rbtree_find_less_equal(rbtree_type *rbtree, const void *key, rbnode_type **result)