nginx/src/core/ngx_radix_tree.h

46 lines
993 B
C
Raw Normal View History

/*
* Copyright (C) Igor Sysoev
*/
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>
#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;
ngx_radix_tree_t *ngx_radix_tree_create(ngx_pool_t *pool,
ngx_uint_t preallocate);
2004-05-25 23:28:46 +08:00
ngx_int_t ngx_radix32tree_insert(ngx_radix_tree_t *tree,
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,
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_ */