annotate src/core/ngx_radix_tree.h @ 7736:a46fcf101cfc

Core: added format specifiers to output binary data as hex. Now "s", "V", and "v" format specifiers may be prefixed with "x" (lowercase) or "X" (uppercase) to output corresponding data in hexadecimal format. In collaboration with Maxim Dounin.
author Vladimir Homutov <vl@nginx.com>
date Wed, 28 Oct 2020 10:56:11 +0300
parents 3be3de31d7dd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 342
diff changeset
1
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 342
diff changeset
2 /*
444
42d11f017717 nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents: 441
diff changeset
3 * Copyright (C) Igor Sysoev
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 489
diff changeset
4 * Copyright (C) Nginx, Inc.
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 342
diff changeset
5 */
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 342
diff changeset
6
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 342
diff changeset
7
340
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 #ifndef _NGX_RADIX_TREE_H_INCLUDED_
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 #define _NGX_RADIX_TREE_H_INCLUDED_
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12 #include <ngx_config.h>
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
13 #include <ngx_core.h>
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
14
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
15
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
16 #define NGX_RADIX_NO_VALUE (uintptr_t) -1
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
17
340
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
18 typedef struct ngx_radix_node_s ngx_radix_node_t;
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
19
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
20 struct ngx_radix_node_s {
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
21 ngx_radix_node_t *right;
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
22 ngx_radix_node_t *left;
342
0ee0642af5f1 nginx-0.0.3-2004-05-26-23:33:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 341
diff changeset
23 ngx_radix_node_t *parent;
0ee0642af5f1 nginx-0.0.3-2004-05-26-23:33:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 341
diff changeset
24 uintptr_t value;
340
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
25 };
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
26
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
27
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
28 typedef struct {
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
29 ngx_radix_node_t *root;
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
30 ngx_pool_t *pool;
341
41e552841296 nginx-0.0.3-2004-05-26-19:30:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 340
diff changeset
31 ngx_radix_node_t *free;
41e552841296 nginx-0.0.3-2004-05-26-19:30:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 340
diff changeset
32 char *start;
340
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
33 size_t size;
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
34 } ngx_radix_tree_t;
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
35
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
36
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
37 ngx_radix_tree_t *ngx_radix_tree_create(ngx_pool_t *pool,
489
45a460f82aec nginx-0.1.19-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
38 ngx_int_t preallocate);
4992
3be3de31d7dd Geo: IPv6 support.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
39
340
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
40 ngx_int_t ngx_radix32tree_insert(ngx_radix_tree_t *tree,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
41 uint32_t key, uint32_t mask, uintptr_t value);
342
0ee0642af5f1 nginx-0.0.3-2004-05-26-23:33:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 341
diff changeset
42 ngx_int_t ngx_radix32tree_delete(ngx_radix_tree_t *tree,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
43 uint32_t key, uint32_t mask);
340
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
44 uintptr_t ngx_radix32tree_find(ngx_radix_tree_t *tree, uint32_t key);
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
45
4992
3be3de31d7dd Geo: IPv6 support.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
46 #if (NGX_HAVE_INET6)
3be3de31d7dd Geo: IPv6 support.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
47 ngx_int_t ngx_radix128tree_insert(ngx_radix_tree_t *tree,
3be3de31d7dd Geo: IPv6 support.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
48 u_char *key, u_char *mask, uintptr_t value);
3be3de31d7dd Geo: IPv6 support.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
49 ngx_int_t ngx_radix128tree_delete(ngx_radix_tree_t *tree,
3be3de31d7dd Geo: IPv6 support.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
50 u_char *key, u_char *mask);
3be3de31d7dd Geo: IPv6 support.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
51 uintptr_t ngx_radix128tree_find(ngx_radix_tree_t *tree, u_char *key);
3be3de31d7dd Geo: IPv6 support.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
52 #endif
3be3de31d7dd Geo: IPv6 support.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
53
340
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
54
0bf903191ceb nginx-0.0.3-2004-05-25-19:28:46 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
55 #endif /* _NGX_RADIX_TREE_H_INCLUDED_ */