1 #ifndef _DRAGONTYPE_BINTREE_H_
2 #define _DRAGONTYPE_BINTREE_H_
8 typedef struct BintreeNode
12 struct BintreeNode *left;
13 struct BintreeNode *right;
16 typedef int (*BintreeComparator)(void *v1, void *v2, struct Bintree *tree);
17 typedef void (*BintreeTraversionFunction)(BintreeNode *node, void *arg);
19 typedef struct Bintree
23 BintreeComparator cmp;
33 Bintree bintree_create(size_t key_size, BintreeComparator cmp);
34 BintreeNode **bintree_search(Bintree *tree, void *key);
35 void bintree_add_node(Bintree *tree, BintreeNode **nodeptr, void *key, void *value);
36 void bintree_insert(Bintree *tree, void *key, void *value);
37 void bintree_traverse(Bintree *tree, BintreeTraversion traversion, BintreeTraversionFunction func, void *arg);
38 void bintree_clear(Bintree *tree, BintreeTraversionFunction func, void *arg);