#include <sys/rbtree.h>

sys/rbtree.h

$NetBSD: rbtree.h,v 1.2 2012/02/17 08:20:55 yamt Exp $
includes: _bounds.h, Availability.h, sys/types.h, stdbool.h, inttypes.h, sys/queue.h
9 macros · 8 functions · 5 typedefs · 3 structs

macroRB_DIR_LEFT

#define RB_DIR_LEFT 0

macroRB_DIR_RIGHT

#define RB_DIR_RIGHT 1

macroRB_TREE_MIN

#define RB_TREE_MIN(T) rb_tree_iterate((T), NULL, RB_DIR_RIGHT)

macroRB_TREE_MAX

#define RB_TREE_MAX(T) rb_tree_iterate((T), NULL, RB_DIR_LEFT)

macroRB_TREE_FOREACH

#define RB_TREE_FOREACH(N, T) for ((N) = RB_TREE_MIN(T); (N);
	(N) = rb_tree_iterate((T), (N), RB_DIR_RIGHT))

macroRB_TREE_FOREACH_SAFE

#define RB_TREE_FOREACH_SAFE(N, T, TVAR) for ((N) = RB_TREE_MIN(T); (N) && ((TVAR) = rb_tree_iterate((T), (N), RB_DIR_RIGHT), 1);
	(N) = (TVAR))

macroRB_TREE_FOREACH_REVERSE

#define RB_TREE_FOREACH_REVERSE(N, T) for ((N) = RB_TREE_MAX(T); (N);
	(N) = rb_tree_iterate((T), (N), RB_DIR_LEFT))

macroRB_TREE_FOREACH_REVERSE_SAFE

#define RB_TREE_FOREACH_REVERSE_SAFE(N, T, TVAR) for ((N) = RB_TREE_MAX(T); (N) && ((TVAR) = rb_tree_iterate((T), (N), RB_DIR_LEFT), 1);
	(N) = (TVAR))

typedefrbto_compare_nodes_fn

typedef signed int (*rbto_compare_nodes_fn)(void *, const void *, const void *)

typedefrbto_compare_key_fn

typedef signed int (*rbto_compare_key_fn)(void *, const void *, const void *)

structrb_tree_ops_t

size 32, align 8
rbto_compare_nodes_fnrbto_compare_nodes
rbto_compare_key_fnrbto_compare_key
size_trbto_node_offset
void *rbto_context

typedefrb_tree_ops_t

typedef struct rb_tree_ops_t rb_tree_ops_t;

structrb_node

size 24, align 8
void *[3]opaque

typedefrb_node_t

typedef struct rb_node { void * opaque[3]; } rb_node_t

structrb_tree

size 64, align 8
void *[8]opaque

typedefrb_tree_t

typedef struct rb_tree { void *opaque[8]; } rb_tree_t

macro_rb_availability

#define _rb_availability __OSX_AVAILABLE_STARTING(__MAC_10_9,__IPHONE_7_0);

functionrb_tree_init

_rb_availability
void rb_tree_init(rb_tree_t *, const rb_tree_ops_t *)
man page · August 29, 2016
rb_tree_init(3) — red-black tree

functionrb_tree_insert_node

_rb_availability
void * rb_tree_insert_node(rb_tree_t *, void *)
man page · August 29, 2016
rb_tree_insert_node(3) — red-black tree

functionrb_tree_find_node

_rb_availability
void * rb_tree_find_node(rb_tree_t *, const void *)
man page · August 29, 2016
rb_tree_find_node(3) — red-black tree

functionrb_tree_find_node_geq

_rb_availability
void * rb_tree_find_node_geq(rb_tree_t *, const void *)
man page · August 29, 2016
rb_tree_find_node_geq(3) — red-black tree

functionrb_tree_find_node_leq

_rb_availability
void * rb_tree_find_node_leq(rb_tree_t *, const void *)
man page · August 29, 2016
rb_tree_find_node_leq(3) — red-black tree

functionrb_tree_remove_node

_rb_availability
void rb_tree_remove_node(rb_tree_t *, void *)
man page · August 29, 2016
rb_tree_remove_node(3) — red-black tree

functionrb_tree_iterate

_rb_availability
void * rb_tree_iterate(rb_tree_t *, void *, const unsigned int)
man page · August 29, 2016
rb_tree_iterate(3) — red-black tree

functionrb_tree_count

_rb_availability
size_t rb_tree_count(rb_tree_t *)
man page · August 29, 2016
rb_tree_count(3) — red-black tree