|
HOME
SIP/media Features
High Performance SIP
Small Footprint SIP
Symbian Port
FAQ
Documentation
Licensing
Download
Development (Trac)
Projects using pjsip
Mailing List
Open Source Links
About: PJLIB, PJLIB-UTIL, PJSIP, and PJMEDIA are created by: Benny Prijono <bennylp pjsip.org>
|
|
Home --> Documentations --> PJLIB Reference
rbtree.hGo to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __PJ_RBTREE_H__
00021 #define __PJ_RBTREE_H__
00022
00028 #include <pj/types.h>
00029
00030 PJ_BEGIN_DECL
00031
00043 typedef enum pj_rbcolor_t
00044 {
00045 PJ_RBCOLOR_BLACK,
00046 PJ_RBCOLOR_RED
00047 } pj_rbcolor_t;
00048
00052 typedef struct pj_rbtree_node
00053 {
00055 struct pj_rbtree_node *parent, *left, *right;
00056
00058 const void *key;
00059
00061 void *user_data;
00062
00064 pj_rbcolor_t color;
00065
00066 } pj_rbtree_node;
00067
00068
00076 typedef int pj_rbtree_comp(const void *key1, const void *key2);
00077
00078
00087 typedef struct pj_rbtree
00088 {
00089 pj_rbtree_node null_node;
00090 pj_rbtree_node *null;
00091 pj_rbtree_node *root;
00092 unsigned size;
00093 pj_rbtree_comp *comp;
00094 } pj_rbtree;
00095
00096
00100 #define PJ_RBTREE_NODE_SIZE (sizeof(pj_rbtree_node))
00101
00102
00106 #define PJ_RBTREE_SIZE (sizeof(pj_rbtree))
00107
00108
00114 PJ_DECL(void) pj_rbtree_init( pj_rbtree *tree, pj_rbtree_comp *comp);
00115
00123 PJ_DECL(pj_rbtree_node*) pj_rbtree_first( pj_rbtree *tree );
00124
00132 PJ_DECL(pj_rbtree_node*) pj_rbtree_last( pj_rbtree *tree );
00133
00141 PJ_DECL(pj_rbtree_node*) pj_rbtree_next( pj_rbtree *tree,
00142 pj_rbtree_node *node );
00143
00151 PJ_DECL(pj_rbtree_node*) pj_rbtree_prev( pj_rbtree *tree,
00152 pj_rbtree_node *node );
00153
00162 PJ_DECL(int) pj_rbtree_insert( pj_rbtree *tree,
00163 pj_rbtree_node *node );
00164
00172 PJ_DECL(pj_rbtree_node*) pj_rbtree_find( pj_rbtree *tree,
00173 const void *key );
00174
00181 PJ_DECL(pj_rbtree_node*) pj_rbtree_erase( pj_rbtree *tree,
00182 pj_rbtree_node *node );
00183
00190 PJ_DECL(unsigned) pj_rbtree_max_height( pj_rbtree *tree,
00191 pj_rbtree_node *node );
00192
00199 PJ_DECL(unsigned) pj_rbtree_min_height( pj_rbtree *tree,
00200 pj_rbtree_node *node );
00201
00202
00207 PJ_END_DECL
00208
00209 #endif
00210
PJLIB Open Source, high performance, small footprint, and very very portable framework
Copyright (C) 2006-2009 Teluu Inc.
|
|