12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #include "includes.h"
- #include "dbutil.h"
- #include "list.h"
- void list_append(m_list *list, void *item) {
- m_list_elem *elem;
-
- elem = m_malloc(sizeof(*elem));
- elem->item = item;
- elem->list = list;
- elem->next = NULL;
- if (!list->first) {
- list->first = elem;
- elem->prev = NULL;
- } else {
- elem->prev = list->last;
- list->last->next = elem;
- }
- list->last = elem;
- }
- m_list * list_new() {
- m_list *ret = m_malloc(sizeof(m_list));
- ret->first = ret->last = NULL;
- return ret;
- }
- void * list_remove(m_list_elem *elem) {
- void *item = elem->item;
- m_list *list = elem->list;
- if (list->first == elem)
- {
- list->first = elem->next;
- }
- if (list->last == elem)
- {
- list->last = elem->prev;
- }
- if (elem->prev)
- {
- elem->prev->next = elem->next;
- }
- if (elem->next)
- {
- elem->next->prev = elem->prev;
- }
- m_free(elem);
- return item;
- }
|