comparison src/core/ngx_radix_tree.h @ 2369:12e8e0045096 radix_with_skip

add radix tree skip node
author Igor Sysoev <igor@sysoev.ru>
date Wed, 03 Dec 2008 13:26:02 +0000
parents 62be1c4edfba
children
comparison
equal deleted inserted replaced
2368:62be1c4edfba 2369:12e8e0045096
17 typedef struct ngx_radix_node_s ngx_radix_node_t; 17 typedef struct ngx_radix_node_s ngx_radix_node_t;
18 18
19 struct ngx_radix_node_s { 19 struct ngx_radix_node_s {
20 ngx_radix_node_t *right; 20 ngx_radix_node_t *right;
21 ngx_radix_node_t *left; 21 ngx_radix_node_t *left;
22 ngx_uint_t skip; 22 uintptr_t skip;
23 uintptr_t value; 23 uintptr_t value;
24 }; 24 };
25 25
26 26
27 typedef struct { 27 typedef struct {
28 ngx_radix_node_t *root; 28 ngx_radix_node_t *root;
29 ngx_pool_t *pool; 29 ngx_pool_t *pool;
30 ngx_radix_node_t *free; 30 ngx_radix_node_t *free;
31 char *start; 31 char *start;
32 size_t size; 32 size_t size;
33 ngx_uint_t count;
33 } ngx_radix_tree_t; 34 } ngx_radix_tree_t;
34 35
35 36
36 ngx_radix_tree_t *ngx_radix_tree_create(ngx_pool_t *pool, 37 ngx_radix_tree_t *ngx_radix_tree_create(ngx_pool_t *pool,
37 ngx_int_t preallocate); 38 ngx_int_t preallocate);
38 ngx_int_t ngx_radix32tree_insert(ngx_radix_tree_t *tree, 39 ngx_int_t ngx_radix32tree_insert(ngx_radix_tree_t *tree,
39 uint32_t key, uint32_t mask, uintptr_t value); 40 uint32_t key, uint32_t mask, uintptr_t value);
40 ngx_int_t ngx_radix32tree_delete(ngx_radix_tree_t *tree, 41 ngx_int_t ngx_radix32tree_delete(ngx_radix_tree_t *tree,
41 uint32_t key, uint32_t mask); 42 uint32_t key, uint32_t mask);
43 void ngx_radix32tree_compress(ngx_radix_tree_t *tree);
42 uintptr_t ngx_radix32tree_find(ngx_radix_tree_t *tree, uint32_t key); 44 uintptr_t ngx_radix32tree_find(ngx_radix_tree_t *tree, uint32_t key);
43 45
44 46
45 #endif /* _NGX_RADIX_TREE_H_INCLUDED_ */ 47 #endif /* _NGX_RADIX_TREE_H_INCLUDED_ */