changeset 7118:b626d8975193 HEAD

Added macros for handling a doubly linked list.
author Timo Sirainen <tss@iki.fi>
date Sun, 06 Jan 2008 02:18:20 +0200
parents 769181a20483
children 8c6a7af67e8c
files src/lib/Makefile.am src/lib/llist.h
diffstat 2 files changed, 22 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/Makefile.am	Sun Jan 06 01:56:37 2008 +0200
+++ b/src/lib/Makefile.am	Sun Jan 06 02:18:20 2008 +0200
@@ -146,6 +146,7 @@
 	ioloop-notify-fd.h \
 	lib.h \
 	lib-signals.h \
+	llist.h \
 	macros.h \
 	md4.h \
 	md5.h \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/lib/llist.h	Sun Jan 06 02:18:20 2008 +0200
@@ -0,0 +1,21 @@
+#ifndef LLIST_H
+#define LLIST_H
+
+/* Doubly linked list */
+#define DLLIST_PREPEND(list, item) STMT_START { \
+	(item)->prev = NULL; \
+	(item)->next = *(list); \
+	if (*(list) != NULL) (*(list))->prev = (item); \
+	*(list) = (item); \
+	} STMT_END
+
+#define DLLIST_REMOVE(list, item) STMT_START { \
+	if ((item)->prev == NULL) \
+		*(list) = (item)->next; \
+	else \
+		(item)->prev->next = (item)->next; \
+	if ((item)->next != NULL) \
+		(item)->next->prev = (item)->prev; \
+	} STMT_END
+
+#endif