list: add list definition and drain operation

This commit is contained in:
wnstngs
2026-10-07 21:33:49 +03:00
parent 91491d825b
commit 5180e693d9
+7
View File
@@ -10,6 +10,7 @@ typedef struct _list_node {
} list_node_t; } list_node_t;
#define LIST_INIT_VALUE(NAME) ((list_node_t) {.prev = &(NAME), .next = &(NAME)}) #define LIST_INIT_VALUE(NAME) ((list_node_t) {.prev = &(NAME), .next = &(NAME)})
#define LIST_DEFINE(NAME) list_node_t NAME = LIST_INIT_VALUE(NAME)
static inline void list_init(list_node_t *list) { static inline void list_init(list_node_t *list) {
list->prev = list; list->prev = list;
@@ -73,4 +74,10 @@ static inline list_node_t *list_pop_back(list_node_t *list) {
ITER != (LIST); \ ITER != (LIST); \
ITER = NEXT, NEXT = ITER->next) ITER = NEXT, NEXT = ITER->next)
#define list_drain_front(LIST, ITER) \
for (list_node_t *ITER = list_pop_front(LIST); ITER != NULL; ITER = list_pop_front(LIST))
#define list_drain_back(LIST, ITER) \
for (list_node_t *ITER = list_pop_back(LIST); ITER != NULL; ITER = list_pop_back(LIST))
#endif #endif