CUBRID Engine  latest
rb_tree.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define RB_HEAD(name, type)
 
#define RB_INITIALIZER(root)   { NULL }
 
#define RB_INIT(root)
 
#define RB_BLACK   0
 
#define RB_RED   1
 
#define RB_ENTRY(type)
 
#define RB_LEFT(elm, field)   (elm)->field.rbe_left
 
#define RB_RIGHT(elm, field)   (elm)->field.rbe_right
 
#define RB_PARENT(elm, field)   (elm)->field.rbe_parent
 
#define RB_COLOR(elm, field)   (elm)->field.rbe_color
 
#define RB_ROOT(head)   (head)->rbh_root
 
#define RB_EMPTY(head)   (RB_ROOT(head) == NULL)
 
#define RB_SET(elm, parent, field)
 
#define RB_SET_BLACKRED(black, red, field)
 
#define RB_AUGMENT(x)   do {} while (0)
 
#define RB_ROTATE_LEFT(head, elm, tmp, field)
 
#define RB_ROTATE_RIGHT(head, elm, tmp, field)
 
#define RB_PROTOTYPE(name, type, field, cmp)   RB_PROTOTYPE_INTERNAL(name, type, field, cmp,)
 
#define RB_PROTOTYPE_STATIC(name, type, field, cmp)   RB_PROTOTYPE_INTERNAL(name, type, field, cmp, static)
 
#define RB_PROTOTYPE_INTERNAL(name, type, field, cmp, attr)
 
#define RB_GENERATE(name, type, field, cmp)   RB_GENERATE_INTERNAL(name, type, field, cmp,)
 
#define RB_GENERATE_STATIC(name, type, field, cmp)   RB_GENERATE_INTERNAL(name, type, field, cmp, static)
 
#define RB_GENERATE_INTERNAL(name, type, field, cmp, attr)
 
#define RB_NEGINF   -1
 
#define RB_INF   1
 
#define RB_INSERT(name, x, y)   name##_RB_INSERT(x, y)
 
#define RB_REMOVE(name, x, y)   name##_RB_REMOVE(x, y)
 
#define RB_FIND(name, x, y)   name##_RB_FIND(x, y)
 
#define RB_NFIND(name, x, y)   name##_RB_NFIND(x, y)
 
#define RB_NEXT(name, x, y)   name##_RB_NEXT(y)
 
#define RB_PREV(name, x, y)   name##_RB_PREV(y)
 
#define RB_MIN(name, x)   name##_RB_MINMAX(x, RB_NEGINF)
 
#define RB_MAX(name, x)   name##_RB_MINMAX(x, RB_INF)
 
#define RB_FOREACH(x, name, head)
 
#define RB_FOREACH_FROM(x, name, y)
 
#define RB_FOREACH_SAFE(x, name, head, y)
 
#define RB_FOREACH_REVERSE(x, name, head)
 
#define RB_FOREACH_REVERSE_FROM(x, name, y)
 
#define RB_FOREACH_REVERSE_SAFE(x, name, head, y)
 

Macro Definition Documentation

#define RB_AUGMENT (   x)    do {} while (0)

Definition at line 77 of file rb_tree.h.

#define RB_BLACK   0

Definition at line 48 of file rb_tree.h.

#define RB_COLOR (   elm,
  field 
)    (elm)->field.rbe_color

Definition at line 61 of file rb_tree.h.

#define RB_EMPTY (   head)    (RB_ROOT(head) == NULL)

Definition at line 63 of file rb_tree.h.

Referenced by tx_lob_locator_clear().

#define RB_ENTRY (   type)
Value:
struct { \
struct type *rbe_left; /* left element */ \
struct type *rbe_right; /* right element */ \
struct type *rbe_parent; /* parent element */ \
int rbe_color; /* node color */ \
}

Definition at line 50 of file rb_tree.h.

#define RB_FIND (   name,
  x,
 
)    name##_RB_FIND(x, y)
#define RB_FOREACH (   x,
  name,
  head 
)
Value:
for ((x) = RB_MIN(name, head); \
(x) != NULL; \
(x) = name##_RB_NEXT(x))
#define NULL
Definition: freelistheap.h:34
#define RB_MIN(name, x)
Definition: rb_tree.h:472

Definition at line 475 of file rb_tree.h.

#define RB_FOREACH_FROM (   x,
  name,
 
)
Value:
for ((x) = (y); \
((x) != NULL) && ((y) = name##_RB_NEXT(x), (x) != NULL); \
(x) = (y))
#define NULL
Definition: freelistheap.h:34

Definition at line 480 of file rb_tree.h.

#define RB_FOREACH_REVERSE (   x,
  name,
  head 
)
Value:
for ((x) = RB_MAX(name, head); \
(x) != NULL; \
(x) = name##_RB_PREV(x))
#define RB_MAX(name, x)
Definition: rb_tree.h:473
#define NULL
Definition: freelistheap.h:34

Definition at line 490 of file rb_tree.h.

#define RB_FOREACH_REVERSE_FROM (   x,
  name,
 
)
Value:
for ((x) = (y); \
((x) != NULL) && ((y) = name##_RB_PREV(x), (x) != NULL); \
(x) = (y))
#define NULL
Definition: freelistheap.h:34

Definition at line 495 of file rb_tree.h.

#define RB_FOREACH_REVERSE_SAFE (   x,
  name,
  head,
 
)
Value:
for ((x) = RB_MAX(name, head); \
((x) != NULL) && ((y) = name##_RB_PREV(x), (x) != NULL); \
(x) = (y))
#define RB_MAX(name, x)
Definition: rb_tree.h:473
#define NULL
Definition: freelistheap.h:34

Definition at line 500 of file rb_tree.h.

#define RB_FOREACH_SAFE (   x,
  name,
  head,
 
)
Value:
for ((x) = RB_MIN(name, head); \
((x) != NULL) && ((y) = name##_RB_NEXT(x), (x) != NULL); \
(x) = (y))
#define NULL
Definition: freelistheap.h:34
#define RB_MIN(name, x)
Definition: rb_tree.h:472

Definition at line 485 of file rb_tree.h.

#define RB_GENERATE (   name,
  type,
  field,
  cmp 
)    RB_GENERATE_INTERNAL(name, type, field, cmp,)

Definition at line 140 of file rb_tree.h.

#define RB_GENERATE_INTERNAL (   name,
  type,
  field,
  cmp,
  attr 
)

Definition at line 144 of file rb_tree.h.

#define RB_GENERATE_STATIC (   name,
  type,
  field,
  cmp 
)    RB_GENERATE_INTERNAL(name, type, field, cmp, static)

Definition at line 142 of file rb_tree.h.

#define RB_HEAD (   name,
  type 
)
Value:
struct name { \
struct type *rbh_root; /* root of the tree */ \
}

Definition at line 36 of file rb_tree.h.

#define RB_INF   1

Definition at line 464 of file rb_tree.h.

#define RB_INIT (   root)
Value:
do { \
(root)->rbh_root = NULL; \
} while (/*CONSTCOND*/ 0)
#define NULL
Definition: freelistheap.h:34

Definition at line 44 of file rb_tree.h.

Referenced by lob_rb_root::init().

#define RB_INITIALIZER (   root)    { NULL }

Definition at line 41 of file rb_tree.h.

#define RB_INSERT (   name,
  x,
 
)    name##_RB_INSERT(x, y)

Definition at line 466 of file rb_tree.h.

Referenced by xtx_add_lob_locator().

#define RB_LEFT (   elm,
  field 
)    (elm)->field.rbe_left

Definition at line 58 of file rb_tree.h.

#define RB_MAX (   name,
 
)    name##_RB_MINMAX(x, RB_INF)

Definition at line 473 of file rb_tree.h.

#define RB_MIN (   name,
 
)    name##_RB_MINMAX(x, RB_NEGINF)

Definition at line 472 of file rb_tree.h.

Referenced by tx_lob_locator_clear().

#define RB_NEGINF   -1

Definition at line 463 of file rb_tree.h.

#define RB_NEXT (   name,
  x,
 
)    name##_RB_NEXT(y)

Definition at line 470 of file rb_tree.h.

Referenced by tx_lob_locator_clear().

#define RB_NFIND (   name,
  x,
 
)    name##_RB_NFIND(x, y)

Definition at line 469 of file rb_tree.h.

#define RB_PARENT (   elm,
  field 
)    (elm)->field.rbe_parent

Definition at line 60 of file rb_tree.h.

#define RB_PREV (   name,
  x,
 
)    name##_RB_PREV(y)

Definition at line 471 of file rb_tree.h.

#define RB_PROTOTYPE (   name,
  type,
  field,
  cmp 
)    RB_PROTOTYPE_INTERNAL(name, type, field, cmp,)

Definition at line 121 of file rb_tree.h.

#define RB_PROTOTYPE_INTERNAL (   name,
  type,
  field,
  cmp,
  attr 
)
Value:
attr void name##_RB_INSERT_COLOR(struct name *, struct type *); \
attr void name##_RB_REMOVE_COLOR(struct name *, struct type *, struct type *);\
attr struct type *name##_RB_REMOVE(struct name *, struct type *); \
attr struct type *name##_RB_INSERT(struct name *, struct type *); \
attr struct type *name##_RB_FIND(struct name *, struct type *); \
attr struct type *name##_RB_NFIND(struct name *, struct type *); \
attr struct type *name##_RB_NEXT(struct type *); \
attr struct type *name##_RB_PREV(struct type *); \
attr struct type *name##_RB_MINMAX(struct name *, int); \
\

Definition at line 125 of file rb_tree.h.

#define RB_PROTOTYPE_STATIC (   name,
  type,
  field,
  cmp 
)    RB_PROTOTYPE_INTERNAL(name, type, field, cmp, static)

Definition at line 123 of file rb_tree.h.

#define RB_RED   1

Definition at line 49 of file rb_tree.h.

#define RB_REMOVE (   name,
  x,
 
)    name##_RB_REMOVE(x, y)

Definition at line 467 of file rb_tree.h.

Referenced by tx_lob_locator_clear(), and xtx_drop_lob_locator().

#define RB_RIGHT (   elm,
  field 
)    (elm)->field.rbe_right

Definition at line 59 of file rb_tree.h.

#define RB_ROOT (   head)    (head)->rbh_root

Definition at line 62 of file rb_tree.h.

#define RB_ROTATE_LEFT (   head,
  elm,
  tmp,
  field 
)
Value:
do { \
(tmp) = RB_RIGHT(elm, field); \
if ((RB_RIGHT(elm, field) = RB_LEFT(tmp, field)) != NULL) { \
RB_PARENT(RB_LEFT(tmp, field), field) = (elm); \
} \
if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) { \
if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \
RB_LEFT(RB_PARENT(elm, field), field) = (tmp); \
RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \
} else \
(head)->rbh_root = (tmp); \
RB_LEFT(tmp, field) = (elm); \
RB_PARENT(elm, field) = (tmp); \
if ((RB_PARENT(tmp, field))) \
RB_AUGMENT(RB_PARENT(tmp, field)); \
} while (/*CONSTCOND*/ 0)
#define RB_PARENT(elm, field)
Definition: rb_tree.h:60
#define RB_AUGMENT(x)
Definition: rb_tree.h:77
#define RB_RIGHT(elm, field)
Definition: rb_tree.h:59
#define NULL
Definition: freelistheap.h:34
if(extra_options)
Definition: dynamic_load.c:958
#define RB_LEFT(elm, field)
Definition: rb_tree.h:58

Definition at line 80 of file rb_tree.h.

#define RB_ROTATE_RIGHT (   head,
  elm,
  tmp,
  field 
)
Value:
do { \
(tmp) = RB_LEFT(elm, field); \
if ((RB_LEFT(elm, field) = RB_RIGHT(tmp, field)) != NULL) { \
RB_PARENT(RB_RIGHT(tmp, field), field) = (elm); \
} \
if ((RB_PARENT(tmp, field) = RB_PARENT(elm, field)) != NULL) { \
if ((elm) == RB_LEFT(RB_PARENT(elm, field), field)) \
RB_LEFT(RB_PARENT(elm, field), field) = (tmp); \
RB_RIGHT(RB_PARENT(elm, field), field) = (tmp); \
} else \
(head)->rbh_root = (tmp); \
RB_RIGHT(tmp, field) = (elm); \
RB_PARENT(elm, field) = (tmp); \
if ((RB_PARENT(tmp, field))) \
RB_AUGMENT(RB_PARENT(tmp, field)); \
} while (/*CONSTCOND*/ 0)
#define RB_PARENT(elm, field)
Definition: rb_tree.h:60
#define RB_AUGMENT(x)
Definition: rb_tree.h:77
#define RB_RIGHT(elm, field)
Definition: rb_tree.h:59
#define NULL
Definition: freelistheap.h:34
if(extra_options)
Definition: dynamic_load.c:958
#define RB_LEFT(elm, field)
Definition: rb_tree.h:58

Definition at line 100 of file rb_tree.h.

#define RB_SET (   elm,
  parent,
  field 
)
Value:
do { \
RB_PARENT(elm, field) = parent; \
RB_LEFT(elm, field) = RB_RIGHT(elm, field) = NULL; \
RB_COLOR(elm, field) = RB_RED; \
} while (/*CONSTCOND*/ 0)
#define RB_RED
Definition: rb_tree.h:49
#define RB_PARENT(elm, field)
Definition: rb_tree.h:60
#define RB_RIGHT(elm, field)
Definition: rb_tree.h:59
#define RB_COLOR(elm, field)
Definition: rb_tree.h:61
#define NULL
Definition: freelistheap.h:34
#define RB_LEFT(elm, field)
Definition: rb_tree.h:58

Definition at line 65 of file rb_tree.h.

#define RB_SET_BLACKRED (   black,
  red,
  field 
)
Value:
do { \
RB_COLOR(black, field) = RB_BLACK; \
RB_COLOR(red, field) = RB_RED; \
} while (/*CONSTCOND*/ 0)
#define RB_BLACK
Definition: rb_tree.h:48
#define RB_RED
Definition: rb_tree.h:49
#define RB_COLOR(elm, field)
Definition: rb_tree.h:61

Definition at line 71 of file rb_tree.h.