diff options
Diffstat (limited to 'list.c')
| -rw-r--r-- | list.c | 99 |
1 files changed, 0 insertions, 99 deletions
@@ -1,99 +0,0 @@ -#include "list.h" - -#include <stdlib.h> -#include <string.h> - -void list_init(struct list *list) -{ - memset(list, 0, sizeof(*list)); -} - -struct list *list_new(void *data) -{ - struct list *list = calloc(1, sizeof(*list)); - list->data = data; - return list; -} - -struct list *list_append(struct list *list, void *data) -{ - if (list == NULL) - { - return list_new(data); - } - - struct list *last = list_get_last(list); - list = list_new(data); - last->next = list; - - return list; -} - -struct list *list_get_last(struct list *list) -{ - while (list && list->next) - list = list->next; - return list; -} - -struct list *list_pop_front(struct list **list) -{ - struct list *popped = *list; - - if (!popped) - return NULL; - - *list = popped->next; - popped->next = NULL; - - return popped; -} - -void list_free(struct list *list, list_free_cb free_cb, void *userdata) -{ - struct list *popped; - - while ((popped = list_pop_front(&list)) != NULL) - { - if (free_cb) - free_cb(popped->data, userdata); - free(popped); - } -} - -#ifdef BUILD_TEST - -#include "test_util.h" - -TEST(list_init) -{ - -} - -TEST(list_new) -{ - -} - -TEST(list_append) -{ - -} - -TEST(list_get_last) -{ - -} - -TEST(list_pop_front) -{ - -} - -TEST(list_free) -{ - -} - - -#endif |
