2.4.4 Tree¶
-
typedef struct ZixTreeImpl ZixTree¶
A balanced binary search tree.
-
typedef int (*ZixTreeCompareFunc)(const void *a, const void *b, const void *user_data)¶
Function for comparing two Tree elements.
-
typedef void (*ZixTreeDestroyFunc)(void *ptr, const void *user_data)¶
Function to destroy a Tree element.
-
ZixTree *zix_tree_new(ZixAllocator *allocator, bool allow_duplicates, ZixTreeCompareFunc cmp, void *cmp_data, ZixTreeDestroyFunc destroy, const void *destroy_user_data)¶
Create a new (empty) tree.
-
ZixStatus zix_tree_insert(ZixTree *t, void *e, ZixTreeIter **ti)¶
Insert the element
e
intot
and pointti
at the new element.
-
ZixStatus zix_tree_remove(ZixTree *t, ZixTreeIter *ti)¶
Remove the item pointed at by
ti
fromt
-
ZixStatus zix_tree_find(const ZixTree *t, const void *e, ZixTreeIter **ti)¶
Set
ti
to an element equal toe
int
.If no such item exists,
ti
is set to NULL.
-
void *zix_tree_get(const ZixTreeIter *ti)¶
Return the data associated with the given tree item.
-
ZixTreeIter *zix_tree_begin(ZixTree *t)¶
Return an iterator to the first (smallest) element in
t
-
ZixTreeIter *zix_tree_end(ZixTree *t)¶
Return an iterator the the element one past the last element in
t
-
bool zix_tree_iter_is_end(const ZixTreeIter *i)¶
Return true iff
i
is an iterator to the end of its tree.
-
ZixTreeIter *zix_tree_rbegin(ZixTree *t)¶
Return an iterator to the last (largest) element in
t
-
ZixTreeIter *zix_tree_rend(ZixTree *t)¶
Return an iterator the the element one before the first element in
t
-
bool zix_tree_iter_is_rend(const ZixTreeIter *i)¶
Return true iff
i
is an iterator to the reverse end of its tree.
-
ZixTreeIter *zix_tree_iter_next(ZixTreeIter *i)¶
Return an iterator that points to the element one past
i
-
ZixTreeIter *zix_tree_iter_prev(ZixTreeIter *i)¶
Return an iterator that points to the element one before
i