+/*!
+ * Template for a naked node in a list of \a T structures.
+ *
+ * To be used as data member in other structures:
+ *
+ * \code
+ * struct Foo
+ * {
+ * DECLARE_NODE_ANON(struct Foo)
+ * int a;
+ * float b;
+ * }
+ *
+ * DECLARE_LIST_TYPE(Foo);
+ *
+ * void foo(void)
+ * {
+ * static LIST_TYPE(Foo) foo_list;
+ * static Foo foo1, foo2;
+ * Foo *fp;
+ *
+ * LIST_INIT(&foo_list);
+ * LIST_ADDHEAD(&foo_list, &foo1);
+ * INSERTBEFORE(&foo_list, &foo2);
+ * FOREACHNODE(fp, &foo_list)
+ * fp->a = 10;
+ * }
+ *
+ * \endcode
+ */
+#define DECLARE_NODE_ANON(T) \
+ T *succ; T *pred;
+
+/*! Declare a typesafe node for structures of type \a T. */
+#define DECLARE_NODE_TYPE(T) \
+ typedef struct T##Node { T *succ; T *pred; } T##Node
+