]> begriffs open source - libderp/blob - include/list.h
WIP: hashmap with memory leaks
[libderp] / include / list.h
1 #ifndef LIBDERP_LIST_H
2 #define LIBDERP_LIST_H
3
4 #include <stdbool.h>
5 #include <stddef.h>
6
7 /* client should look inside */
8 typedef struct list_item
9 {
10         void *data;
11         struct list_item *prev, *next;
12 } list_item;
13
14 /* but this should be opaque */
15 typedef struct list list;
16
17 list *      l_new(void (*elt_dtor)(void *));
18 void        l_free(list *);
19 size_t      l_length(const list *);
20 bool        l_is_empty(const list *);
21 list_item * l_first(const list *);
22 list_item * l_last(const list *);
23 list_item * l_find(const list *, const void *,
24                    int (*)(const void *, const void *));
25 list_item * l_find_last(const list *, const void *,
26                         int (*)(const void *, const void *));
27 bool        l_append(list *, void *);
28 bool        l_prepend(list *, void *);
29 list_item * l_remove_first(list *);
30 list_item * l_remove_last(list *);
31 bool        l_remove(list *, list_item *);
32 bool        l_insert(list *, list_item *, void *);
33 bool        l_insert_after(list *, list_item *, void *);
34 bool        l_clear(list *);
35 bool        l_sort(list *,
36                    int (*)(const void *, const void *));
37
38 #endif