Go to the documentation of this file. 48 static inline void ll_init(
struct linkedList *list)
60 static inline bool ll_empty(
struct linkedList *list)
62 return (list->
next == list);
99 #define ll_add_head ll_add_after 100 #define ll_add_tail ll_add_before 124 #define LL_INIT(list) \ 127 #define LL_ENTRY(element, type, field) \ 128 ((type *)((uint8_t *)(element) - offsetof(type, field))) 138 #define LL_FOR_EACH(element, list, type, field) \ 139 for ((element) = LL_ENTRY((list)->next, type, field); \ 140 &(element)->field != (list); \ 141 (element) = LL_ENTRY((element)->field.next, type, field)) 148 #define LL_FOR_EACH_SAFE(element, next_element, list, type, field) \ 149 for ((element) = LL_ENTRY((list)->next, type, field), (next_element) = LL_ENTRY((element)->field.next, type, field); \ 150 &(element)->field != (list); \ 151 (element) = (next_element), (next_element) = LL_ENTRY((element)->field.next, type, field))