84 #define LIST_CONCAT(s1, s2) s1##s2 
   86 #define LIST_STRUCT(name)           \ 
   87   void *LIST_CONCAT(name, _list);       \ 
   90 #define LIST_STRUCT_INIT(struct_ptr, name)  {               \ 
   91     (struct_ptr)->name = &((struct_ptr)->LIST_CONCAT(name,_list));  \ 
   92     (struct_ptr)->LIST_CONCAT(name,_list) = NULL;           \ 
  102   LL_DELETE(*(
struct list **)list, (
struct list *)item);
 
  108   LL_APPEND(*(
struct list **)list, (
struct list *)item);
 
  113   LL_PREPEND(*(
struct list **)list, (
struct list *)item);
 
  128   if(previtem == NULL) {
 
  131     ((
struct list *)newitem)->next = ((
struct list *)previtem)->next;
 
  132     ((
struct list *)previtem)->next = newitem;
 
  139   return item == NULL? NULL: ((
struct list *)item)->next;
 
static void * list_pop(list_t list)
static void list_insert(list_t list, void *previtem, void *newitem)
#define LL_PREPEND(head, add)
static void list_add(list_t list, void *item)
static void * list_item_next(void *item)
#define LL_APPEND(head, add)
static void * list_head(list_t list)
static void list_remove(list_t list, void *item)
#define LL_DELETE(head, del)
static void list_push(list_t list, void *item)