nginx 0.1.19
[nginx-catap.git] / src / core / ngx_radix_tree.h
blob02a9f383b7e83f1b21e41c20869ac2ce1d96a5ac
2 /*
3 * Copyright (C) Igor Sysoev
4 */
7 #ifndef _NGX_RADIX_TREE_H_INCLUDED_
8 #define _NGX_RADIX_TREE_H_INCLUDED_
11 #include <ngx_config.h>
12 #include <ngx_core.h>
15 #define NGX_RADIX_NO_VALUE (uintptr_t) -1
17 typedef struct ngx_radix_node_s ngx_radix_node_t;
19 struct ngx_radix_node_s {
20 ngx_radix_node_t *right;
21 ngx_radix_node_t *left;
22 ngx_radix_node_t *parent;
23 uintptr_t value;
27 typedef struct {
28 ngx_radix_node_t *root;
29 ngx_pool_t *pool;
30 ngx_radix_node_t *free;
31 char *start;
32 size_t size;
33 } ngx_radix_tree_t;
36 ngx_radix_tree_t *ngx_radix_tree_create(ngx_pool_t *pool,
37 ngx_int_t preallocate);
38 ngx_int_t ngx_radix32tree_insert(ngx_radix_tree_t *tree,
39 uint32_t key, uint32_t mask, uintptr_t value);
40 ngx_int_t ngx_radix32tree_delete(ngx_radix_tree_t *tree,
41 uint32_t key, uint32_t mask);
42 uintptr_t ngx_radix32tree_find(ngx_radix_tree_t *tree, uint32_t key);
45 #endif /* _NGX_RADIX_TREE_H_INCLUDED_ */