summaryrefslogtreecommitdiffstats
path: root/list.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--list.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/list.c b/list.c
new file mode 100644
index 0000000..9cf1ad0
--- /dev/null
+++ b/list.c
@@ -0,0 +1,32 @@
+#include <stddef.h>
+#include "list.h"
+
+struct _list {
+ LINKEDLIST;
+};
+
+void list_init(struct list *list) {
+ list->tail = list;
+ list->head = list;
+ list->end = list;
+}
+
+void list_insert(void *_next, void *_node) {
+ struct _list *node = _node;
+ struct _list *next = _next;
+ struct _list *prev = next->prev;
+ next->prev = node;
+ prev->next = node;
+ node->next = next;
+ node->prev = prev;
+}
+
+void list_remove(void *_node) {
+ struct _list *node = _node;
+ struct _list *next = node->next;
+ struct _list *prev = node->prev;
+ next->prev = prev;
+ prev->next = next;
+ node->next = NULL;
+ node->prev = NULL;
+}