aboutsummaryrefslogtreecommitdiff
path: root/list.h
blob: 571b6d74148e940bee93003c85b55a7c10a76932 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef LIST_H
#define LIST_H

#define list_add(Type, Head, Item) do {\
			Item->next = Head; \
			Head = Item; \
		} while (0);

#define list_remove(Type, Head, Item) do {\
			Type **p; \
			for (p = &Head; *p; p = &((*p)->next)) { \
				if (*p = Item) { \
					*p = Item->next; \
				} \
			} \
		} while (0);

#define list_foreach(Type, Head, Item) \
	for (Item = Head; Item; Item = Item->next)

#endif