79#define DBL_LIST(name) \
80 static void *name##_dbl_list = NULL; \
81 static dbl_list_t name = (dbl_list_t)&name##_dbl_list
void dbl_list_add_after(dbl_list_t dll, void *existing, void *element)
Add an element to a doubly linked list after an existing element.
unsigned long dbl_list_length(const_dbl_list_t dll)
Get the length of a doubly-linked list.
void * dbl_list_tail(const_dbl_list_t dll)
Return the tail of a doubly-linked list.
void ** dbl_list_t
The doubly-linked list datatype.
void dbl_list_add_head(dbl_list_t dll, void *element)
Add an element to the head of a doubly-linked list.
void dbl_list_add_before(dbl_list_t dll, void *existing, void *element)
Add an element to a doubly linked list before an existing element.
void dbl_list_add_tail(dbl_list_t dll, void *element)
Add an element to the tail of a doubly-linked list.
void * dbl_list_head(const_dbl_list_t dll)
Return the tail of a doubly-linked list.
void dbl_list_remove(dbl_list_t dll, const void *element)
Remove an element from a doubly-linked list.
void dbl_list_init(dbl_list_t dll)
Initialise a doubly-linked list.
void *const * const_dbl_list_t
The non-modifiable doubly-linked list type.
bool dbl_list_is_empty(const_dbl_list_t dll)
Determine whether a doubly-linked list is empty.