Defines | |
| #define | remove_from_list(elem) |
| Remove an element from list. More... | |
| #define | insert_at_head(list, elem) |
| Insert an element to the list head. More... | |
| #define | insert_at_tail(list, elem) |
| Insert an element to the list tail. More... | |
| #define | move_to_head(list, elem) |
| Move an element to the list head. More... | |
| #define | move_to_tail(list, elem) |
| Move an element to the list tail. More... | |
| #define | make_empty_list(sentinal) |
| Make a empty list empty. More... | |
| #define | first_elem(list) ((list)->next) |
| Get list first element. More... | |
| #define | last_elem(list) ((list)->prev) |
| Get list last element. More... | |
| #define | next_elem(elem) ((elem)->next) |
| Get next element. More... | |
| #define | prev_elem(elem) ((elem)->prev) |
| Get previous element. More... | |
| #define | at_end(list, elem) ((elem) == (list)) |
| Test whether element is at end of the list. More... | |
| #define | is_empty_list(list) ((list)->next == (list)) |
| Test if a list is empty. More... | |
| #define | foreach(ptr, list) for( ptr=(list)->next ; ptr!=list ; ptr=(ptr)->next ) |
| Walk through the elements of a list. More... | |
| #define | foreach_s(ptr, t, list) for(ptr=(list)->next,t=(ptr)->next; list != ptr; ptr=t, t=(t)->next) |
| Walk through the elements of a list. More... | |
Intended to work with a list sentinal which is created as an empty list. Insert & delete are O(1).
|
|
Test whether element is at end of the list.
|
|
|
Get list first element.
|
|
|
Walk through the elements of a list.
|
|
|
Walk through the elements of a list. Same as foreach but lets you unlink the current value during a list traversal. Useful for freeing a list, element by element.
|
|
|
Value: do { \
(elem)->prev = list; \
(elem)->next = (list)->next; \
(list)->next->prev = elem; \
(list)->next = elem; \
} while(0)
|
|
|
Value: do { \
(elem)->next = list; \
(elem)->prev = (list)->prev; \
(list)->prev->next = elem; \
(list)->prev = elem; \
} while(0)
|
|
|
Test if a list is empty.
|
|
|
Get list last element.
|
|
|
Value: do { \
(sentinal)->next = sentinal; \
(sentinal)->prev = sentinal; \
} while (0)
|
|
|
Value: do { \
remove_from_list(elem); \
insert_at_head(list, elem); \
} while (0)
|
|
|
Value: do { \
remove_from_list(elem); \
insert_at_tail(list, elem); \
} while (0)
|
|
|
Get next element.
|
|
|
Get previous element.
|
|
|
Value: do { \
(elem)->next->prev = (elem)->prev; \
(elem)->prev->next = (elem)->next; \
} while (0)
|
1.2.13.1 written by Dimitri van Heesch,
© 1997-2001