fix the select() call to work after it has timed out, and always flush at the end...
[dana/dcompmgr.git] / list.h
1 #ifndef dc__list_h
2 #define dc__list_h
3
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.
6 */
7
8 typedef struct d_list d_list_t;
9
10 typedef struct d_list_it {
11     struct d_list_it *next;
12     struct d_list_it *prev;
13     void             *data;
14 } d_list_it_t;
15
16 d_list_t* list_new(void);
17
18 void list_ref(d_list_t *list);
19 void list_unref(d_list_t *list);
20
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);
26
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);
32
33 #endif