td4list.h File Reference

#include <stddef.h>

Go to the source code of this file.

Defines

#define offsetofnew(TYPE, MEMBER)   (((size_t) &((TYPE *)4)->MEMBER) - 4 )
#define VIRTORG(p, st, lk)
#define DQUEUE(somestruct)
#define DQUEUE_INIT(head, st, link)   (head).linkb = (head).linkf = VIRTORG(head, st, link);
#define DQUEUE_ADD(new, node, link)
#define DQUEUE_RMV(node, link)
#define DQUEUE_TEST(head, st, link)   ((head).linkf == VIRTORG(head, st, link))
#define SQUEUE_HEAD(somestruct)
#define SQUEUE_INIT(head, st, link)
#define SQUEUE_ADD(new, head, link)
#define SQUEUE_TEST(head)   (head).lifot
#define SQUEUE_RMV(result, head, st, link)

Define Documentation

#define DQUEUE ( somestruct   ) 
Value:
struct {               \
        somestruct *linkf; \
        somestruct *linkb; \
    }

Definition at line 42 of file td4list.h.

#define DQUEUE_ADD ( new,
node,
link   ) 
Value:
do                                          \
    {                                           \
        (new)->link.linkf = (node)->link.linkf; \
        (new)->link.linkb = (node);             \
        (node)->link.linkf->link.linkb = (new); \
        (node)->link.linkf = (new);             \
    } while(0)

Definition at line 53 of file td4list.h.

#define DQUEUE_INIT ( head,
st,
link   )     (head).linkb = (head).linkf = VIRTORG(head, st, link);

Definition at line 49 of file td4list.h.

#define DQUEUE_RMV ( node,
link   ) 
Value:
do                                                       \
    {                                                        \
        (node)->link.linkb->link.linkf = (node)->link.linkf; \
        (node)->link.linkf->link.linkb = (node)->link.linkb; \
    } while(0)

Definition at line 63 of file td4list.h.

#define DQUEUE_TEST ( head,
st,
link   )     ((head).linkf == VIRTORG(head, st, link))

Definition at line 71 of file td4list.h.

#define offsetofnew ( TYPE,
MEMBER   )     (((size_t) &((TYPE *)4)->MEMBER) - 4 )

Definition at line 34 of file td4list.h.

#define SQUEUE_ADD ( new,
head,
link   ) 
Value:
(new)->link = NULL;             \
    (head).lifob->link = (new);     \
    (head).lifob = (new);

Definition at line 89 of file td4list.h.

#define SQUEUE_HEAD ( somestruct   ) 
Value:
struct                      \
    {                           \
        somestruct    *lifot;   \
        somestruct    *lifob;   \
    }

Definition at line 77 of file td4list.h.

#define SQUEUE_INIT ( head,
st,
link   ) 
Value:
(head).lifot = NULL;                \
    (head).lifob = VIRTORG(head, st, link)

Definition at line 84 of file td4list.h.

#define SQUEUE_RMV ( result,
head,
st,
link   ) 
Value:
result = (head).lifot;                      \
    (head).lifot = result->link;                \
    if (((head).lifot) == NULL)                 \
    {                                           \
        (head).lifob = VIRTORG(head, st, link); \
    }

Definition at line 106 of file td4list.h.

#define SQUEUE_TEST ( head   )     (head).lifot

Definition at line 95 of file td4list.h.

#define VIRTORG ( p,
st,
lk   ) 
Value:
(                    \
       (st *)            (                      \
       ((char *) (&p)) - offsetofnew(st, lk)    \
                         ) )

Definition at line 36 of file td4list.h.

Generated on Wed Jul 4 16:03:30 2012 for RIO by  doxygen 1.6.3