aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/audit/tools/auvirt/auvirt-list.h
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