This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Defines | |
#define | SEARCH_EQUAL 0x1 |
#define | SEARCH_GTEQ 0x2 |
#define | SEARCH_LTEQ 0x3 |
#define | SEARCH_GT 0x4 |
#define | SEARCH_LT 0x5 |
#define | SEARCH_NEXT 0x6 |
#define | SEARCH_PREV 0x7 |
#define | SEARCH_FIRST 0x8 |
#define | SEARCH_LAST 0x9 |
#define | WALK_PREORDER 0x100 |
#define | WALK_INORDER 0x101 |
#define | WALK_POSTORDER 0x102 |
Typedefs | |
typedef void * | rbtree |
Functions | |
rbtree | rb_init (int(*)(void *, void *, void *), void *) |
void | rb_destroy (rbtree) |
void | rb_insert (rbtree, void *, void *) |
void * | rb_find (rbtree, void *) |
int | rb_exists (rbtree, void *) |
void * | rb_delete (rbtree, void *) |
void * | rb_release (rbtree, void(*)(void *, void *, void *), void *) |
void | rb_walk (rbtree, int, int(*)(void *, void *, int, void *), void *) |
unsigned int | rb_size (rbtree) |
void * | rb_search (rbtree, int, void *) |
void * | rb_index (rbtree, int) |
void* rb_delete | ( | rbtree | , | |
void * | ||||
) |
void rb_destroy | ( | rbtree | ) |
int rb_exists | ( | rbtree | , | |
void * | ||||
) |
void* rb_find | ( | rbtree | , | |
void * | ||||
) |
void* rb_index | ( | rbtree | , | |
int | ||||
) |
Definition at line 895 of file rbtree.c.
References rbtree_node_t::count, rbtree_node_t::data, rbtree_head_t::head, rbtree_node_t::left, rbfail, and rbtree_node_t::right.
00896 { 00897 rbtree_node *iter; 00898 int leftcount; 00899 iter = bt->head; 00900 00901 while (iter) { 00902 leftcount = (iter->left ? iter->left->count : 0); 00903 00904 if(index == leftcount) { 00905 return iter->data; 00906 } 00907 if(index < leftcount) { 00908 iter = iter->left; 00909 } else { 00910 index -= leftcount + 1; 00911 iter = iter->right; 00912 } 00913 } 00914 rbfail("major braindamage."); 00915 }
rbtree rb_init | ( | int(*)(void *, void *, void *) | , | |
void * | ||||
) |
void rb_insert | ( | rbtree | , | |
void * | , | |||
void * | ||||
) |
void* rb_release | ( | rbtree | , | |
void(*)(void *, void *, void *) | , | |||
void * | ||||
) |
Definition at line 152 of file rbtree.c.
References rbtree_node_t::data, rbtree_head_t::head, rbtree_node_t::key, rbtree_node_t::left, rbtree_node_t::parent, and rbtree_node_t::right.
Referenced by auto_astar_generate_path().
00154 { 00155 rbtree_node *node, *parent; 00156 node = bt->head; 00157 00158 if(bt->head) { 00159 while (node != NULL) { 00160 if(node->left != NULL) { 00161 node = node->left; 00162 continue; 00163 } else if(node->right != NULL) { 00164 node = node->right; 00165 continue; 00166 } else { 00167 parent = node->parent; 00168 if(parent && parent->left == node) 00169 parent->left = NULL; 00170 else if(parent && parent->right == node) 00171 parent->right = NULL; 00172 else if(parent) { 00173 fprintf(stderr, "serious braindamage.\n"); 00174 exit(1); 00175 } 00176 release(node->key, node->data, arg); 00177 free(node); 00178 node = parent; 00179 } 00180 } 00181 } 00182 free(bt); 00183 return; 00184 }
void* rb_search | ( | rbtree | , | |
int | , | |||
void * | ||||
) |
unsigned int rb_size | ( | rbtree | ) |
void rb_walk | ( | rbtree | , | |
int | , | |||
int(*)(void *, void *, int, void *) | , | |||
void * | ||||
) |