diff options
author | Danny Holman <dholman@gymli.org> | 2023-01-04 00:38:12 -0600 |
---|---|---|
committer | Danny Holman <dholman@gymli.org> | 2023-01-04 00:38:12 -0600 |
commit | 39f58a0ebb8897f8d0c3a0f82b384386e05b201c (patch) | |
tree | f0c660f872e42e4a1830fcf00acd0a97aa1dec66 | |
parent | 34ff0d8d259088a6c17f07590d524bd9334a59a2 (diff) |
server: add a linked list implementation
Add a linked list implementation for generic use.
Signed-off-by: Danny Holman <dholman@gymli.org>
-rw-r--r-- | server/include/list.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/server/include/list.h b/server/include/list.h new file mode 100644 index 0000000..fc3af68 --- /dev/null +++ b/server/include/list.h @@ -0,0 +1,31 @@ +#ifndef MRAT_LIST_H +#define MRAT_LIST_H + +#include <stddef.h> + +struct list_head { + struct list_head *next; + struct list_head *prev; +}; + +static inline void list_add(struct list_head *new, struct list_head *head) { + new->prev = head; + new->next = head->next; + + head->next = new; + if (head->prev != NULL) + head->prev->next = new; +} + +static inline void list_del(struct list_head *item) { + struct list_head *next = item->next; + struct list_head *prev = item->prev; + if (next != NULL) + next->prev = prev; + if (prev != NULL) + prev->next = next; + item->next = NULL; + item->prev = NULL; +} + +#endif |