| /* | |
| * Copyright (C) Igor Sysoev | |
| */ | |
| #ifndef _NGX_RADIX_TREE_H_INCLUDED_ | |
| #define _NGX_RADIX_TREE_H_INCLUDED_ | |
| #include <ngx_config.h> | |
| #include <ngx_core.h> | |
| #define NGX_RADIX_NO_VALUE (uintptr_t) -1 | |
| typedef struct ngx_radix_node_s ngx_radix_node_t; | |
| struct ngx_radix_node_s { | |
| ngx_radix_node_t *right; | |
| ngx_radix_node_t *left; | |
| ngx_radix_node_t *parent; | |
| uintptr_t value; | |
| }; | |
| typedef struct { | |
| ngx_radix_node_t *root; | |
| ngx_pool_t *pool; | |
| ngx_radix_node_t *free; | |
| char *start; | |
| size_t size; | |
| } ngx_radix_tree_t; | |
| ngx_radix_tree_t *ngx_radix_tree_create(ngx_pool_t *pool, | |
| ngx_int_t preallocate); | |
| ngx_int_t ngx_radix32tree_insert(ngx_radix_tree_t *tree, | |
| uint32_t key, uint32_t mask, uintptr_t value); | |
| ngx_int_t ngx_radix32tree_delete(ngx_radix_tree_t *tree, | |
| uint32_t key, uint32_t mask); | |
| uintptr_t ngx_radix32tree_find(ngx_radix_tree_t *tree, uint32_t key); | |
| #endif /* _NGX_RADIX_TREE_H_INCLUDED_ */ |