Defines
lists.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Defines

#define _list_find_hook(list, c, hook)   MACRO_BEGIN _list_forall_hook(list, hook) if (c) break; MACRO_END
#define _list_forall_hook(list, hook)   for (hook=&list; *hook!=NULL; hook=&(*hook)->next)
#define _list_merge_cond(listtype, a, b, cond, result)
#define dlist_append(head, end, elt)
#define dlist_forall_unlink(elt, head, end)   for (elt=head; elt ? (head=elt->next, elt->next=NULL, elt->prev=NULL), 1 : (end=NULL, 0); elt=head)
#define dlist_unlink_first(head, end, elt)
#define list_append(listtype, list, elt)
#define list_count(list, n, elt, c)
#define list_find(elt, list, c)   MACRO_BEGIN list_forall(elt, list) if (c) break; MACRO_END
#define list_find2(elt, list, c, hook)   MACRO_BEGIN list_forall2(elt, list, hook) if (c) break; MACRO_END
#define list_forall(elt, list)   for (elt=list; elt!=NULL; elt=elt->next)
#define list_forall2(elt, list, hook)   for (elt=list, hook=&list; elt!=NULL; hook=&elt->next, elt=elt->next)
#define list_forall_unlink(elt, list)   for (elt=list; elt ? (list=elt->next, elt->next=NULL), 1 : 0; elt=list)
#define list_index(list, n, elt, c)
#define list_insert_athook(elt, hook)   MACRO_BEGIN elt->next = *hook; *hook = elt; MACRO_END
#define list_insert_beforehook(elt, hook)   MACRO_BEGIN elt->next = *hook; *hook = elt; hook=&elt->next; MACRO_END
#define list_insert_ordered(listtype, list, elt, tmp, cond)
#define list_length(listtype, list, n)
#define list_mergesort(listtype, list, a, b, cond)
#define list_nth(elt, list, n)
#define list_nth_hook(elt, list, n, hook)
#define list_prepend(list, elt)   MACRO_BEGIN elt->next = list; list = elt; MACRO_END
#define list_reverse(listtype, list)
#define list_sort(listtype, list, a, b, cond)
#define list_unlink(listtype, list, elt)
#define list_unlink_athook(list, elt, hook)
#define list_unlink_cond(listtype, list, elt, c)
#define MACRO_BEGIN   do {
#define MACRO_END   } while (0)

Define Documentation

#define _list_find_hook (   list,
  c,
  hook 
)    MACRO_BEGIN _list_forall_hook(list, hook) if (c) break; MACRO_END

Definition at line 62 of file lists.h.

#define _list_forall_hook (   list,
  hook 
)    for (hook=&list; *hook!=NULL; hook=&(*hook)->next)

Definition at line 58 of file lists.h.

#define _list_merge_cond (   listtype,
  a,
  b,
  cond,
  result 
)
Value:
MACRO_BEGIN                                            \
  listtype **_hook;                                      \
  _hook = &(result);                                     \
  while (1) {                                            \
     if (a==NULL) {                                      \
       *_hook = b;                                       \
       break;                                            \
     } else if (b==NULL) {                               \
       *_hook = a;                                       \
       break;                                            \
     } else if (cond) {                                  \
       *_hook = a;                                       \
       _hook = &(a->next);                               \
       a = a->next;                                      \
     } else {                                            \
       *_hook = b;                                       \
       _hook = &(b->next);                               \
       b = b->next;                                      \
     }                                                   \
  }                                                      \
  MACRO_END

Definition at line 227 of file lists.h.

#define dlist_append (   head,
  end,
  elt 
)
Value:
MACRO_BEGIN                                              \
  elt->prev = end;                                       \
  elt->next = NULL;                                      \
  if (end) {                                             \
    end->next = elt;                                     \
  } else {                                               \
    head = elt;                                          \
  }                                                      \
  end = elt;                                             \
  MACRO_END

Definition at line 253 of file lists.h.

#define dlist_forall_unlink (   elt,
  head,
  end 
)    for (elt=head; elt ? (head=elt->next, elt->next=NULL, elt->prev=NULL), 1 : (end=NULL, 0); elt=head)

Definition at line 266 of file lists.h.

#define dlist_unlink_first (   head,
  end,
  elt 
)
Value:
MACRO_BEGIN                                              \
  elt = head;                                            \
  if (head) {                                            \
    head = head->next;                                   \
    if (head) {                                          \
      head->prev = NULL;                                 \
    } else {                                             \
      end = NULL;                                        \
    }                                                    \
    elt->prev = NULL;                                    \
    elt->next = NULL;                                    \
  }                                                      \
  MACRO_END

Definition at line 270 of file lists.h.

#define list_append (   listtype,
  list,
  elt 
)
Value:
MACRO_BEGIN                                \
  listtype **_hook;                          \
  _list_forall_hook(list, _hook) {}          \
  list_insert_athook(elt, _hook);            \
  MACRO_END

Definition at line 94 of file lists.h.

#define list_count (   list,
  n,
  elt,
  c 
)
Value:
MACRO_BEGIN                                              \
  n=0;                                                   \
  list_forall(elt, list) {                               \
    if (c) n++;                                          \
  }                                                      \
  MACRO_END

Definition at line 148 of file lists.h.

#define list_find (   elt,
  list,
  c 
)    MACRO_BEGIN list_forall(elt, list) if (c) break; MACRO_END

Definition at line 46 of file lists.h.

#define list_find2 (   elt,
  list,
  c,
  hook 
)    MACRO_BEGIN list_forall2(elt, list, hook) if (c) break; MACRO_END

Definition at line 54 of file lists.h.

#define list_forall (   elt,
  list 
)    for (elt=list; elt!=NULL; elt=elt->next)

Definition at line 42 of file lists.h.

#define list_forall2 (   elt,
  list,
  hook 
)    for (elt=list, hook=&list; elt!=NULL; hook=&elt->next, elt=elt->next)

Definition at line 50 of file lists.h.

#define list_forall_unlink (   elt,
  list 
)    for (elt=list; elt ? (list=elt->next, elt->next=NULL), 1 : 0; elt=list)

Definition at line 157 of file lists.h.

#define list_index (   list,
  n,
  elt,
  c 
)
Value:
MACRO_BEGIN                                              \
  n=0;                                                   \
  list_forall(elt, list) {                               \
    if (c) break;                                        \
    n++;                                                 \
  }                                                      \
  if (!elt)                                              \
    n=-1;                                                \
  MACRO_END

Definition at line 136 of file lists.h.

#define list_insert_athook (   elt,
  hook 
)    MACRO_BEGIN elt->next = *hook; *hook = elt; MACRO_END

Definition at line 66 of file lists.h.

#define list_insert_beforehook (   elt,
  hook 
)    MACRO_BEGIN elt->next = *hook; *hook = elt; hook=&elt->next; MACRO_END

Definition at line 70 of file lists.h.

#define list_insert_ordered (   listtype,
  list,
  elt,
  tmp,
  cond 
)
Value:
MACRO_BEGIN                                               \
  listtype **_hook;                                         \
  _list_find_hook(list, (tmp=*_hook, (cond)), _hook);       \
  list_insert_athook(elt, _hook);                           \
  MACRO_END

Definition at line 180 of file lists.h.

#define list_length (   listtype,
  list,
  n 
)
Value:
MACRO_BEGIN                                              \
  listtype *_elt;                                        \
  n=0;                                                   \
  list_forall(_elt, list)                                \
    n++;                                                 \
  MACRO_END

Definition at line 126 of file lists.h.

#define list_mergesort (   listtype,
  list,
  a,
  b,
  cond 
)
Value:
MACRO_BEGIN                                                     \
  listtype *_elt, **_hook1;                                     \
                                                                \
  for (_elt=list; _elt; _elt=_elt->next1) {                     \
    _elt->next1 = _elt->next;                                   \
    _elt->next = NULL;                                          \
  }                                                             \
  do {                                                          \
    _hook1 = &(list);                                           \
    while ((a = *_hook1) != NULL && (b = a->next1) != NULL ) {  \
      _elt = b->next1;                                          \
      _list_merge_cond(listtype, a, b, cond, *_hook1);          \
      _hook1 = &((*_hook1)->next1);                             \
      *_hook1 = _elt;                                           \
    }                                                           \
  } while (_hook1 != &(list));                                  \
  MACRO_END

Definition at line 207 of file lists.h.

#define list_nth (   elt,
  list,
  n 
)
Value:
MACRO_BEGIN                                                 \
  int _x;  /* only evaluate n once */                         \
  for (_x=(n), elt=list; _x && elt; _x--, elt=elt->next) {}   \
  MACRO_END

Definition at line 111 of file lists.h.

#define list_nth_hook (   elt,
  list,
  n,
  hook 
)
Value:
MACRO_BEGIN                                                 \
  int _x;  /* only evaluate n once */                         \
  for (_x=(n), elt=list, hook=&list; _x && elt; _x--, hook=&elt->next, elt=elt->next) {}   \
  MACRO_END

Definition at line 119 of file lists.h.

#define list_prepend (   list,
  elt 
)    MACRO_BEGIN elt->next = list; list = elt; MACRO_END

Definition at line 90 of file lists.h.

#define list_reverse (   listtype,
  list 
)
Value:
MACRO_BEGIN                                     \
  listtype *_list1=NULL, *elt;                  \
  list_forall_unlink(elt, list)                 \
    list_prepend(_list1, elt);                  \
  list = _list1;                                \
  MACRO_END

Definition at line 161 of file lists.h.

#define list_sort (   listtype,
  list,
  a,
  b,
  cond 
)
Value:
MACRO_BEGIN                                            \
  listtype *_newlist=NULL;                               \
  list_forall_unlink(a, list)                            \
    list_insert_ordered(listtype, _newlist, a, b, cond); \
  list = _newlist;                                       \
  MACRO_END

Definition at line 194 of file lists.h.

#define list_unlink (   listtype,
  list,
  elt 
)
Value:
MACRO_BEGIN                                   \
  listtype **_hook;                           \
  _list_find_hook(list, *_hook==elt, _hook);  \
  list_unlink_athook(list, elt, _hook);       \
  MACRO_END

Definition at line 82 of file lists.h.

#define list_unlink_athook (   list,
  elt,
  hook 
)
Value:
MACRO_BEGIN \
  elt = hook ? *hook : NULL; if (elt) { *hook = elt->next; elt->next = NULL; }\
  MACRO_END

Definition at line 75 of file lists.h.

#define list_unlink_cond (   listtype,
  list,
  elt,
  c 
)
Value:
MACRO_BEGIN                                        \
  listtype **_hook;                                  \
  list_find2(elt, list, c, _hook);                   \
  list_unlink_athook(list, elt, _hook);              \
  MACRO_END

Definition at line 102 of file lists.h.

#define MACRO_BEGIN   do {

Definition at line 35 of file lists.h.

#define MACRO_END   } while (0)

Definition at line 36 of file lists.h.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines


portrait_painter
Author(s): Niklas Meinzer, Ina Baumgarten
autogenerated on Wed Dec 26 2012 16:00:43