blob: fb5874689f794f305d6911be5cc21e4c1326f3c0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#ifndef AUVIRT_LIST_HEADER
#define AUVIRT_LIST_HEADER
typedef void (list_free_data_fn)(void *data);
typedef struct list_node_t {
void *data;
struct list_node_t *prev;
struct list_node_t *next;
} list_node_t;
typedef struct list_t {
list_node_t *head;
list_node_t *tail;
list_free_data_fn *free_data_fn;
} list_t;
list_t *list_init(list_t *list, list_free_data_fn *free_data_fn);
list_t *list_new(list_free_data_fn *free_data_fn);
void list_free_(list_t *list, list_free_data_fn *free_data_fn);
void list_free(list_t *list);
list_node_t *list_insert_after(list_t *list, list_node_t *it,
void *data);
list_node_t *list_append(list_t *list, void *data);
int list_remove_(list_t *list, list_node_t *it,
list_free_data_fn *free_data_fn);
int list_remove(list_t *list, list_node_t *it);
#endif
|