57#ifndef DBL_CIRC_LIST_H_
58#define DBL_CIRC_LIST_H_
79#define DBL_CIRC_LIST(name) \
80 static void *name##_dbl_circ_list = NULL; \
81 static dbl_list_t name = (dbl_circ_list_t)&name##_dbl_circ_list
void dbl_circ_list_add_before(dbl_circ_list_t dblcl, void *existing, void *element)
Add element to a circular, doubly-linked list before existing element.
void dbl_circ_list_add_head(dbl_circ_list_t dblcl, void *element)
Add an element to the head of a circular, doubly-linked list.
void ** dbl_circ_list_t
The doubly-linked circular list datatype.
void *const * const_dbl_circ_list_t
The non-modifiable doubly-linked circular list type.
bool dbl_circ_list_is_empty(const_dbl_circ_list_t dblcl)
Determine whether a circular, doubly-linked list is empty.
unsigned long dbl_circ_list_length(const_dbl_circ_list_t dblcl)
Get the length of a circular, doubly-linked list.
void dbl_circ_list_remove(dbl_circ_list_t dblcl, const void *element)
Remove an element from a circular, doubly-linked list.
void dbl_circ_list_add_after(dbl_circ_list_t dblcl, void *existing, void *element)
Add element to a circular, doubly-linked list after existing element.
void dbl_circ_list_init(dbl_circ_list_t dblcl)
Initialise a circular, doubly-linked list.
void dbl_circ_list_add_tail(dbl_circ_list_t dblcl, void *element)
Add an element to the tail of a circular, doubly-linked list.
void * dbl_circ_list_head(const_dbl_circ_list_t dblcl)
Return the tail of a circular, doubly-linked list.
void * dbl_circ_list_tail(const_dbl_circ_list_t dblcl)
Return the tail of a circular, doubly-linked list.