101 typedef int (*AvlComparator)(
const AvlNode*,
const AvlNode*,
void*);
104 typedef int (*AvlHetComparator)(
const void*,
const AvlNode*,
void*);
107 typedef void (*AvlTraverseCb)(
void*,
const AvlNode*);
110 typedef void (*AvlTraverseMutCb)(
void*, AvlNode*);
113 typedef void (*AvlDeleter)(AvlNode*,
void*);
128 AvlDeleter deleter,
void *deleter_arg);
149 AvlHetComparator compare,
void *arg);
191 void *compare_arg, AvlNode* (*insert)(
const void*,
void*),
192 void *insert_arg,
int *inserted);
226 AvlComparator compare;
278 signed char balance_factor;
const AvlNode * AvlTree_get(const AvlTree *self, const void *key, AvlHetComparator compare, void *arg)
void AvlTree_new(AvlTree *self, AvlComparator compare, void *compare_arg, AvlDeleter deleter, void *deleter_arg)
Initializes an empty AvlTree.
void AvlTree_drop(AvlTree *self)
Drops an AvlTree, removing all members.
AvlNode * AvlTree_insert(AvlTree *self, AvlNode *node)
Inserts an element into an AvlTree.
AVL self-balancing binary search tree.
Definition: bloodhound.h:223
AvlNode * AvlTree_remove(AvlTree *self, const void *key, AvlHetComparator compare, void *arg)
Removes the node that compares equal to a key.
AvlNode * AvlTree_get_or_insert(AvlTree *self, const void *key, AvlHetComparator compare, void *compare_arg, AvlNode *(*insert)(const void *, void *), void *insert_arg, int *inserted)
Inserts an element into an AvlTree if no element with a matching key is found.
void AvlTree_clear(AvlTree *self)
Clears the tree, removing all members.
Intrusive AVL tree node.
Definition: bloodhound.h:275
AvlNode * AvlTree_get_mut(AvlTree *self, const void *key, AvlHetComparator compare, void *arg)