nfs-ganesha 1.4
Defines

rbt_tree.h File Reference

Go to the source code of this file.

Defines

#define _RDT_TREE_H
#define RBT_HEAD_INIT(__header)
#define RBT_COUNT(__header)   ((__header)->rbt_num_node)
#define RBT_RIGHTMOST(__header)   ((__header)->rightmost)
#define RBT_LEFTMOST(__header)   ((__header)->leftmost)
#define RBT_VALUE(__node)   ((__node)->rbt_value)
#define RBT_OPAQ(__node)   ((__node)->rbt_opaq)
#define RBT_INCREMENT(__node)
#define RBT_DECREMENT(__node)
#define RBT_LOOP(__header, __it)   for ((__it) = (__header)->leftmost; (__it);)
#define RBT_LOOP_REVERSE(__header, __it)   for ((__it) = (__header)->rightmost; (__it);)
#define RBT_ROTATE_LEFT(__xx)
#define RBT_ROTATE_RIGHT(__xx)
#define RBT_INSERT(__header, __node, __par)
#define RBT_UNLINK(__header, __node)
#define RBT_FIND(__header, __node, __val)
#define RBT_FIND_LEFT(__header, __node, __val)
#define RBT_BLACK_COUNT(__node, __sum)
#define RBT_VERIFY(__header, __it, __error)

Define Documentation

#define _RDT_TREE_H

Definition at line 99 of file rbt_tree.h.

#define RBT_BLACK_COUNT (   __node,
  __sum 
)
Value:
{                                                                       \
  for ((__sum) = 0; (__node); (__node) = (__node)->parent) {            \
    if (!((__node)->rbt_flags & RBT_RED))                               \
      ++(__sum);                                                        \
  }                                                                     \
}

Definition at line 577 of file rbt_tree.h.

#define RBT_COUNT (   __header)    ((__header)->rbt_num_node)

Definition at line 111 of file rbt_tree.h.

#define RBT_DECREMENT (   __node)
Value:
{                                                                       \
  if ((__node)->left) {                                                 \
    __node = (__node)->left;                                            \
    while ((__node)->next)                                              \
      (__node) = (__node)->next;                                        \
  } else {                                                              \
    struct rbt_node *__x;                                               \
    do {                                                                \
      __x = (__node);                                                   \
    } while ((((__node) = (__node)->parent)) && ((__node)->left == __x));       \
  }                                                                     \
}

Definition at line 149 of file rbt_tree.h.

#define RBT_FIND (   __header,
  __node,
  __val 
)
Value:
{                                                                       \
  struct rbt_node *__x;                                                 \
  (__node) = (__header)->root;                                          \
  __x = (__header)->root;                                               \
  while (__x) {                                                         \
    (__node) = __x;                                                     \
    if (__x->rbt_value > (__val)) {                                     \
      __x = __x->left;                                                  \
    } else if (__x->rbt_value < (__val)) {                              \
      __x = __x->next;                                                  \
    } else {                                                            \
      break;                                                            \
    }                                                                   \
  }                                                                     \
}

Definition at line 504 of file rbt_tree.h.

#define RBT_FIND_LEFT (   __header,
  __node,
  __val 
)
Value:
{                                                                       \
  struct rbt_node *__x;                                                 \
  (__node) = 0;                                                         \
  __x = (__header)->root;                                               \
  while (__x) {                                                         \
    if (__x->rbt_value > (__val)) {                                     \
      __x = __x->left;                                                  \
    } else if (__x->rbt_value < (__val)) {                              \
      __x = __x->next;                                                  \
    } else {                                                            \
      (__node) = __x;                                                   \
      while (__x) {                                                     \
        while ((__x = __x->left)) {                                     \
          if (__x->rbt_value < (__val))                                 \
            break;                                                      \
          (__node) = __x;                                               \
        }                                                               \
        if (__x == 0)                                                   \
          break;                                                        \
        while ((__x = __x->next)) {                                     \
          if (__x->rbt_value == (__val)) {                              \
            (__node) = __x;                                             \
            break;                                                      \
          }                                                             \
        }                                                               \
      }                                                                 \
      break;                                                            \
    }                                                                   \
  }                                                                     \
}

Definition at line 542 of file rbt_tree.h.

#define RBT_HEAD_INIT (   __header)
Value:
((__header)->root = 0,                                          \
   (__header)->leftmost = 0,                                            \
   (__header)->rightmost = 0,                                           \
   (__header)->rbt_num_node = 0)

Definition at line 105 of file rbt_tree.h.

#define RBT_INCREMENT (   __node)
Value:
{                                                                       \
  if ((__node)->next) {                                                 \
    __node = (__node)->next;                                            \
    while ((__node)->left)                                              \
      (__node) = (__node)->left;                                        \
  } else {                                                              \
    struct rbt_node *__x;                                               \
    do {                                                                \
      __x = (__node);                                                   \
    } while ((((__node) = (__node)->parent)) && ((__node)->next == __x));       \
  }                                                                     \
}

Definition at line 135 of file rbt_tree.h.

#define RBT_INSERT (   __header,
  __node,
  __par 
)

Definition at line 241 of file rbt_tree.h.

#define RBT_LEFTMOST (   __header)    ((__header)->leftmost)

Definition at line 115 of file rbt_tree.h.

#define RBT_LOOP (   __header,
  __it 
)    for ((__it) = (__header)->leftmost; (__it);)

Definition at line 171 of file rbt_tree.h.

#define RBT_LOOP_REVERSE (   __header,
  __it 
)    for ((__it) = (__header)->rightmost; (__it);)

Definition at line 174 of file rbt_tree.h.

#define RBT_OPAQ (   __node)    ((__node)->rbt_opaq)

Definition at line 127 of file rbt_tree.h.

#define RBT_RIGHTMOST (   __header)    ((__header)->rightmost)

Definition at line 113 of file rbt_tree.h.

#define RBT_ROTATE_LEFT (   __xx)
Value:
{                                                                       \
  struct rbt_node *__yy;                                                \
  __yy = (__xx)->next;                                                  \
  if (((__xx)->next = __yy->left)) {                                    \
    __yy->left->parent = (__xx);                                        \
    __yy->left->anchor = &(__xx)->next;                                 \
  }                                                                     \
  __yy->parent = (__xx)->parent;                                        \
  __yy->left = (__xx);                                                  \
  __yy->anchor = (__xx)->anchor;                                        \
  (__xx)->parent = __yy;                                                \
  (__xx)->anchor = &__yy->left;                                         \
  *__yy->anchor = __yy;                                                 \
}

Definition at line 185 of file rbt_tree.h.

#define RBT_ROTATE_RIGHT (   __xx)
Value:
{                                                                       \
  struct rbt_node *__yy;                                                \
  __yy = (__xx)->left;                                                  \
  if (((__xx)->left = __yy->next)) {                                    \
    __yy->next->parent = (__xx);                                        \
    __yy->next->anchor = &(__xx)->left;                                 \
  }                                                                     \
  __yy->parent = (__xx)->parent;                                        \
  __yy->next = (__xx);                                                  \
  __yy->anchor = (__xx)->anchor;                                        \
  (__xx)->parent = __yy;                                                \
  (__xx)->anchor = &__yy->next;                                         \
  *__yy->anchor = __yy;                                                 \
}

Definition at line 201 of file rbt_tree.h.

#define RBT_UNLINK (   __header,
  __node 
)

Definition at line 337 of file rbt_tree.h.

#define RBT_VALUE (   __node)    ((__node)->rbt_value)

Definition at line 121 of file rbt_tree.h.

#define RBT_VERIFY (   __header,
  __it,
  __error 
)

Definition at line 585 of file rbt_tree.h.