#ifndef __RARCHDB_BINTREE_H__ #define __RARCHDB_BINTREE_H__ typedef int(*bintree_cmp_func)(const void *a, const void *b, void* ctx); typedef int(*bintree_iter_cb)(void *value, void* ctx); struct bintree_node { void* value; struct bintree_node *parent; struct bintree_node *left; struct bintree_node *right; }; struct bintree { struct bintree_node *root; bintree_cmp_func cmp; void *ctx; }; void bintree_new(struct bintree *t, bintree_cmp_func cmp, void *ctx); int bintree_insert(struct bintree *t, void *value); int bintree_iterate(const struct bintree *t, bintree_iter_cb cb, void* ctx); void bintree_free(struct bintree *t); #endif