|  | #ifndef _NGX_RBTREE_H_INCLUDED_ | 
|  | #define _NGX_RBTREE_H_INCLUDED_ | 
|  |  | 
|  |  | 
|  | #include <ngx_config.h> | 
|  | #include <ngx_core.h> | 
|  |  | 
|  |  | 
|  | typedef struct ngx_rbtree_s  ngx_rbtree_t; | 
|  |  | 
|  | struct ngx_rbtree_s { | 
|  | ngx_int_t       key; | 
|  | ngx_rbtree_t   *left; | 
|  | ngx_rbtree_t   *right; | 
|  | ngx_rbtree_t   *parent; | 
|  | char            color; | 
|  | }; | 
|  |  | 
|  |  | 
|  | void ngx_rbtree_insert(ngx_rbtree_t **root, ngx_rbtree_t *sentinel, | 
|  | ngx_rbtree_t *node); | 
|  | void ngx_rbtree_delete(ngx_rbtree_t **root, ngx_rbtree_t *sentinel, | 
|  | ngx_rbtree_t *node); | 
|  |  | 
|  |  | 
|  | ngx_inline static ngx_rbtree_t *ngx_rbtree_min(ngx_rbtree_t *node, | 
|  | ngx_rbtree_t *sentinel) | 
|  | { | 
|  | while (node->left != sentinel) { | 
|  | node = node->left; | 
|  | } | 
|  |  | 
|  | return node; | 
|  | } | 
|  |  | 
|  |  | 
|  | #endif /* _NGX_RBTREE_H_INCLUDED_ */ |