Added src/utils_avltree.[ch]: An implementation of an AVL-tree.
[collectd.git] / src / utils_avltree.h
1 #ifndef UTILS_AVLTREE_H
2 #define UTILS_AVLTREE_H 1
3
4 struct avl_tree_s;
5 typedef struct avl_tree_s avl_tree_t;
6
7 struct avl_iterator_s;
8 typedef struct avl_iterator_s avl_iterator_t;
9
10 avl_tree_t *avl_create (int (*compare) (const void *, const void *));
11 void avl_destroy (avl_tree_t *t);
12
13 int avl_insert (avl_tree_t *t, void *key, void *value);
14 void *avl_remove (avl_tree_t *t, void *key);
15
16 void *avl_get (avl_tree_t *t, void *key);
17
18 avl_iterator_t *avl_get_iterator (avl_tree_t *t);
19 void *avl_iterator_next (avl_iterator_t *iter);
20 void *avl_iterator_prev (avl_iterator_t *iter);
21 void avl_iterator_destroy (avl_iterator_t *iter);
22
23 #endif /* UTILS_AVLTREE_H */