1 /*
2  * rb.h
3  * (C)2000-2011 by Marc Huber <Marc.Huber@web.de>
4  *
5  * $Id: rb.h,v 1.13 2011/08/28 13:42:24 marc Exp marc $
6  *
7  */
8 
9 #ifndef __RB_H__
10 #define __RB_H__
11 #include <sys/types.h>
12 #include "misc/sysconf.h"
13 
14 struct rb_tree;
15 struct rb_node;
16 typedef struct rb_tree rb_tree_t;
17 typedef struct rb_node rb_node_t;
18 
19 rb_tree_t *RB_tree_new(int (*)(const void *, const void *),
20 		       void (*)(void *));
21 rb_node_t *RB_insert(rb_tree_t *, void *);
22 rb_node_t *RB_search(rb_tree_t *, void *);
23 rb_node_t *RB_first(rb_tree_t *);
24 rb_node_t *RB_next(rb_node_t *);
25 int RB_empty(rb_tree_t *);
26 int RB_count(rb_tree_t *);
27 void RB_delete(rb_tree_t *, rb_node_t *);
28 void RB_payload_unlink(rb_node_t *);
29 void RB_tree_delete(rb_tree_t *);
30 void RB_search_and_delete(rb_tree_t *, void *);
31 void *RB_lookup(rb_tree_t *, void *);
32 void *RB_payload_get(rb_node_t *);
33 #define RB_payload(A,B) ((B)RB_payload_get(A))
34 
35 #endif				/* __RB_H__ */
36