]> git.lizzy.rs Git - dragonstd.git/blob - bintree.h
0e6e87781de04bb5b5921d836a449c720654e229
[dragonstd.git] / bintree.h
1 #ifndef _DRAGONTYPE_BINTREE_H_
2 #define _DRAGONTYPE_BINTREE_H_
3
4 #include <stddef.h>
5
6 typedef struct BintreeNode
7 {
8         void *key;
9         void *value;
10         struct BintreeNode *left;
11         struct BintreeNode *right;
12 } BintreeNode;
13
14 typedef struct
15 {
16         BintreeNode *root;
17         size_t key_size;
18 } Bintree;
19
20 typedef void (*BintreeFreeFunction)(void *value, void *arg);
21
22 Bintree bintree_create(size_t key_size);
23 BintreeNode **bintree_search(Bintree *tree, void *key);
24 void bintree_add_node(Bintree *tree, BintreeNode **nodeptr, void *key, void *value);
25 void bintree_clear(Bintree *tree, BintreeFreeFunction func, void *arg);
26
27 #endif