1 #ifndef UTILS_AVLTREE_H
2 #define UTILS_AVLTREE_H 1
5 typedef struct avl_tree_s avl_tree_t;
8 typedef struct avl_iterator_s avl_iterator_t;
16 avl_tree_t *avl_create (int (*compare) (const void *, const void *));
17 void avl_destroy (avl_tree_t *t);
19 int avl_insert (avl_tree_t *t, void *key, void *value);
20 int avl_remove (avl_tree_t *t, void *key, void **rkey, void **rvalue);
22 int avl_get (avl_tree_t *t, const void *key, void **value);
24 avl_iterator_t *avl_get_iterator (avl_tree_t *t);
25 void *avl_iterator_next (avl_iterator_t *iter);
26 void *avl_iterator_prev (avl_iterator_t *iter);
27 void avl_iterator_destroy (avl_iterator_t *iter);
29 #endif /* UTILS_AVLTREE_H */