diff options
Diffstat (limited to 'common')
-rw-r--r-- | common/list.c | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/common/list.c b/common/list.c deleted file mode 100644 index 557e0dc..0000000 --- a/common/list.c +++ /dev/null @@ -1,85 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "list.h" - -void list_init(struct list *list) { - list->capacity = 10; - list->length = 0; - list->items = malloc(sizeof(void *) * list->capacity); -} - -static void list_resize(struct list *list) { - if (list->length == list->capacity) { - list->capacity *= 2; - list->items = realloc(list->items, sizeof(void *) * list->capacity); - } -} - -void list_free(struct list *list) { - list->capacity = 0; - list->length = 0; - free(list->items); -} - -void list_add(struct list *list, void *item) { - list_resize(list); - list->items[list->length++] = item; -} - -void list_insert(struct list *list, size_t index, void *item) { - list_resize(list); - memmove(&list->items[index + 1], &list->items[index], - sizeof(void *) * (list->length - index)); - list->length++; - list->items[index] = item; -} - -void list_del(struct list *list, size_t index) { - list->length--; - memmove(&list->items[index], &list->items[index + 1], - sizeof(void *) * (list->length - index)); -} - -size_t list_find(struct list *list, const void *item) { - for (size_t i = 0; i < list->length; i++) { - if (list->items[i] == item) { - return i; - } - } - return -1; -} - -void list_concat(struct list *list, const struct list *source) { - if (list->length + source->length > list->capacity) { - while (list->length + source->length > list->capacity) { - list->capacity *= 2; - } - list->items = realloc(list->items, sizeof(void *) * list->capacity); - } - memmove(&list->items[list->length], source->items, sizeof(void *) * (source->length)); - list->length += source->length; -} - -void list_truncate(struct list *list) { - list->length = 0; -} - -void *list_pop_front(struct list *list) { - if (list->length == 0) { - return NULL; - } - void *item = list->items[0]; - list_del(list, 0); - return item; -} - -void *list_pop_back(struct list *list) { - if (list->length == 0) { - return NULL; - } - void *item = list->items[list->length - 1]; - list->length -= 1; - return item; -} |