3 * Copyright (C) Igor Sysoev
4 * Copyright (C) Nginx, Inc.
8 #ifndef _NGX_RADIX_TREE_H_INCLUDED_
9 #define _NGX_RADIX_TREE_H_INCLUDED_
12 #include <ngx_config.h>
16 #define NGX_RADIX_NO_VALUE (uintptr_t) -1
18 typedef struct ngx_radix_node_s ngx_radix_node_t
;
20 struct ngx_radix_node_s
{
21 ngx_radix_node_t
*right
;
22 ngx_radix_node_t
*left
;
23 ngx_radix_node_t
*parent
;
29 ngx_radix_node_t
*root
;
31 ngx_radix_node_t
*free
;
37 ngx_radix_tree_t
*ngx_radix_tree_create(ngx_pool_t
*pool
,
38 ngx_int_t preallocate
);
40 ngx_int_t
ngx_radix32tree_insert(ngx_radix_tree_t
*tree
,
41 uint32_t key
, uint32_t mask
, uintptr_t value
);
42 ngx_int_t
ngx_radix32tree_delete(ngx_radix_tree_t
*tree
,
43 uint32_t key
, uint32_t mask
);
44 uintptr_t ngx_radix32tree_find(ngx_radix_tree_t
*tree
, uint32_t key
);
47 ngx_int_t
ngx_radix128tree_insert(ngx_radix_tree_t
*tree
,
48 u_char
*key
, u_char
*mask
, uintptr_t value
);
49 ngx_int_t
ngx_radix128tree_delete(ngx_radix_tree_t
*tree
,
50 u_char
*key
, u_char
*mask
);
51 uintptr_t ngx_radix128tree_find(ngx_radix_tree_t
*tree
, u_char
*key
);
55 #endif /* _NGX_RADIX_TREE_H_INCLUDED_ */