123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- PJ_BEGIN_DECL
-
- typedef enum pj_rbcolor_t
- {
- PJ_RBCOLOR_BLACK,
- PJ_RBCOLOR_RED
- } pj_rbcolor_t;
- typedef struct pj_rbtree_node
- {
-
- struct pj_rbtree_node *parent;
-
- struct pj_rbtree_node *left;
-
- struct pj_rbtree_node *right;
-
- const void *key;
-
- void *user_data;
-
- pj_rbcolor_t color;
- } pj_rbtree_node;
- typedef int pj_rbtree_comp(const void *key1, const void *key2);
- typedef struct pj_rbtree
- {
- pj_rbtree_node null_node;
- pj_rbtree_node *null;
- pj_rbtree_node *root;
- unsigned size;
- pj_rbtree_comp *comp;
- } pj_rbtree;
- PJ_DECL(void) pj_rbtree_init( pj_rbtree *tree, pj_rbtree_comp *comp);
- PJ_DECL(pj_rbtree_node*) pj_rbtree_first( pj_rbtree *tree );
- PJ_DECL(pj_rbtree_node*) pj_rbtree_last( pj_rbtree *tree );
- PJ_DECL(pj_rbtree_node*) pj_rbtree_next( pj_rbtree *tree,
- pj_rbtree_node *node );
- PJ_DECL(pj_rbtree_node*) pj_rbtree_prev( pj_rbtree *tree,
- pj_rbtree_node *node );
- PJ_DECL(int) pj_rbtree_insert( pj_rbtree *tree,
- pj_rbtree_node *node );
- PJ_DECL(pj_rbtree_node*) pj_rbtree_find( pj_rbtree *tree,
- const void *key );
- PJ_DECL(pj_rbtree_node*) pj_rbtree_erase( pj_rbtree *tree,
- pj_rbtree_node *node );
- PJ_DECL(unsigned) pj_rbtree_max_height( pj_rbtree *tree,
- pj_rbtree_node *node );
- PJ_DECL(unsigned) pj_rbtree_min_height( pj_rbtree *tree,
- pj_rbtree_node *node );
- PJ_END_DECL
|