2004-09-28 16:34:51 +08:00
|
|
|
|
|
|
|
/*
|
2004-09-30 00:00:49 +08:00
|
|
|
* Copyright (C) Igor Sysoev
|
2012-01-18 23:07:43 +08:00
|
|
|
* Copyright (C) Nginx, Inc.
|
2004-09-28 16:34:51 +08:00
|
|
|
*/
|
|
|
|
|
|
|
|
|
2004-05-25 23:28:46 +08:00
|
|
|
#ifndef _NGX_RADIX_TREE_H_INCLUDED_
|
|
|
|
#define _NGX_RADIX_TREE_H_INCLUDED_
|
|
|
|
|
|
|
|
|
|
|
|
#include <ngx_config.h>
|
|
|
|
#include <ngx_core.h>
|
|
|
|
|
|
|
|
|
2005-02-04 03:33:37 +08:00
|
|
|
#define NGX_RADIX_NO_VALUE (uintptr_t) -1
|
|
|
|
|
2004-05-25 23:28:46 +08:00
|
|
|
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;
|
2004-05-27 03:33:53 +08:00
|
|
|
ngx_radix_node_t *parent;
|
|
|
|
uintptr_t value;
|
2004-05-25 23:28:46 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
ngx_radix_node_t *root;
|
|
|
|
ngx_pool_t *pool;
|
2004-05-26 23:30:12 +08:00
|
|
|
ngx_radix_node_t *free;
|
|
|
|
char *start;
|
2004-05-25 23:28:46 +08:00
|
|
|
size_t size;
|
|
|
|
} ngx_radix_tree_t;
|
|
|
|
|
|
|
|
|
2005-02-09 22:31:07 +08:00
|
|
|
ngx_radix_tree_t *ngx_radix_tree_create(ngx_pool_t *pool,
|
2005-02-16 21:40:36 +08:00
|
|
|
ngx_int_t preallocate);
|
2004-05-25 23:28:46 +08:00
|
|
|
ngx_int_t ngx_radix32tree_insert(ngx_radix_tree_t *tree,
|
2005-02-09 22:31:07 +08:00
|
|
|
uint32_t key, uint32_t mask, uintptr_t value);
|
2004-05-27 03:33:53 +08:00
|
|
|
ngx_int_t ngx_radix32tree_delete(ngx_radix_tree_t *tree,
|
2005-02-09 22:31:07 +08:00
|
|
|
uint32_t key, uint32_t mask);
|
2004-05-25 23:28:46 +08:00
|
|
|
uintptr_t ngx_radix32tree_find(ngx_radix_tree_t *tree, uint32_t key);
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* _NGX_RADIX_TREE_H_INCLUDED_ */
|