comparison src/core/ngx_rbtree.h @ 853:a7c8cbb4c55f

rbtree insert procedure
author Igor Sysoev <igor@sysoev.ru>
date Thu, 16 Nov 2006 15:34:52 +0000
parents 4390fcad6628
children 4924b71d77f6
comparison
equal deleted inserted replaced
852:629b5e4f8931 853:a7c8cbb4c55f
21 struct ngx_rbtree_node_s { 21 struct ngx_rbtree_node_s {
22 ngx_rbtree_key_t key; 22 ngx_rbtree_key_t key;
23 ngx_rbtree_node_t *left; 23 ngx_rbtree_node_t *left;
24 ngx_rbtree_node_t *right; 24 ngx_rbtree_node_t *right;
25 ngx_rbtree_node_t *parent; 25 ngx_rbtree_node_t *parent;
26 char color; 26 u_char color;
27 u_char data;
27 }; 28 };
28 29
29 30
30 typedef struct ngx_rbtree_s ngx_rbtree_t; 31 typedef struct ngx_rbtree_s ngx_rbtree_t;
31 32
32 typedef ngx_rbtree_node_t *(*ngx_rbtree_insert_pt) (ngx_rbtree_node_t *root, 33 typedef void (*ngx_rbtree_insert_pt) (ngx_rbtree_node_t *root,
33 ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel); 34 ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel);
34 35
35 struct ngx_rbtree_s { 36 struct ngx_rbtree_s {
36 ngx_rbtree_node_t *root; 37 ngx_rbtree_node_t *root;
37 ngx_rbtree_node_t *sentinel; 38 ngx_rbtree_node_t *sentinel;
38 /* ngx_rbtree_insert_pt insert; */ 39 ngx_rbtree_insert_pt insert;
39 }; 40 };
40 41
41 42
42 void ngx_rbtree_insert(ngx_thread_volatile ngx_rbtree_t *tree, 43 void ngx_rbtree_insert(ngx_thread_volatile ngx_rbtree_t *tree,
43 ngx_rbtree_node_t *node); 44 ngx_rbtree_node_t *node);
44 void ngx_rbtree_delete(ngx_thread_volatile ngx_rbtree_t *tree, 45 void ngx_rbtree_delete(ngx_thread_volatile ngx_rbtree_t *tree,
45 ngx_rbtree_node_t *node); 46 ngx_rbtree_node_t *node);
47 void ngx_rbtree_insert_timer_value(ngx_rbtree_node_t *root,
48 ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel);
46 49
47 50
48 static ngx_inline ngx_rbtree_node_t * 51 static ngx_inline ngx_rbtree_node_t *
49 ngx_rbtree_min(ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel) 52 ngx_rbtree_min(ngx_rbtree_node_t *node, ngx_rbtree_node_t *sentinel)
50 { 53 {