4 /* To make a new list, create 2 pointers: one for the head, one for the
5 tail. Initialize them both to NULL. Then pass them to loco_list_prepend.
8 typedef struct d_list d_list_t;
10 typedef struct d_list_it {
11 struct d_list_it *next;
12 struct d_list_it *prev;
16 d_list_t* list_new(void);
18 void list_ref(d_list_t *list);
19 void list_unref(d_list_t *list);
21 d_list_it_t* list_prepend(d_list_t *list, void *data);
22 d_list_it_t* list_append(d_list_t *list, void *data);
23 void list_delete_link(d_list_t *list, d_list_it_t *pos);
24 void list_move_before(d_list_t *list, d_list_it_t *move, d_list_it_t *before);
25 void list_remove(d_list_t *list, void *data);
27 int list_length(d_list_t *list);
28 d_list_it_t* list_top(d_list_t *list);
29 d_list_it_t* list_bottom(d_list_t *list);
30 d_list_it_t* list_nth(d_list_t *list, int n);
31 d_list_it_t* list_find(d_list_t *list, void *data);