9 /* client should look inside */
10 typedef struct list_item
13 struct list_item *prev, *next;
16 /* but this should be opaque */
17 typedef struct list list;
19 list * l_new(void (*elt_dtor)(void *));
21 size_t l_length(const list *);
22 bool l_is_empty(const list *);
23 list_item * l_first(const list *);
24 list_item * l_last(const list *);
25 list_item * l_find(const list *, const void *,
26 comparator *, void *aux);
27 list_item * l_find_last(const list *, const void *,
28 comparator *, void * aux);
29 bool l_append(list *, void *);
30 bool l_prepend(list *, void *);
31 list_item * l_remove_first(list *);
32 list_item * l_remove_last(list *);
33 bool l_remove(list *, list_item *);
34 bool l_insert(list *, list_item *, void *);
35 bool l_insert_after(list *, list_item *, void *);
37 bool l_sort(list *, comparator *, void *aux);