view src/core/ngx_rbtree.h @ 107:495d867e35e8

Added tag NGINX_0_3_0 for changeset 45f7329b4bd0
author Igor Sysoev <http://sysoev.ru>
date Fri, 07 Oct 2005 00:00:00 +0400
parents 45f7329b4bd0
children cf3d6edb3ad6
line wrap: on
line source


/*
 * Copyright (C) Igor Sysoev
 */


#ifndef _NGX_RBTREE_H_INCLUDED_
#define _NGX_RBTREE_H_INCLUDED_


#include <ngx_config.h>
#include <ngx_core.h>


typedef ngx_uint_t  ngx_rbtree_key_t;
typedef ngx_int_t   ngx_rbtree_key_int_t;


typedef struct ngx_rbtree_s  ngx_rbtree_t;

struct ngx_rbtree_s {
    ngx_rbtree_key_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);


static ngx_inline 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_ */