src/utils_avltree.[ch]: Changed the interface to return the key upon deletion.
[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 struct avl_keyval_s
11 {
12         void *key;
13         void *value;
14 };
15
16 avl_tree_t *avl_create (int (*compare) (const void *, const void *));
17 void avl_destroy (avl_tree_t *t);
18
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);
21
22 int avl_get (avl_tree_t *t, const void *key, void **value);
23
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);
28
29 #endif /* UTILS_AVLTREE_H */