]> git.ozlabs.org Git - ccan-lca-2011.git/blobdiff - ccan/list/test/compile_ok-constant.c
Many list funcs should work with constant lists.
[ccan-lca-2011.git] / ccan / list / test / compile_ok-constant.c
diff --git a/ccan/list/test/compile_ok-constant.c b/ccan/list/test/compile_ok-constant.c
new file mode 100644 (file)
index 0000000..edb3cb0
--- /dev/null
@@ -0,0 +1,49 @@
+#include "list/list.h"
+#include "tap/tap.h"
+#include "list/list.c"
+#include <stdbool.h>
+#include <stdio.h>
+
+struct child {
+       const char *name;
+       struct list_node list;
+};
+
+static bool children(const struct list_head *list)
+{
+       return !list_empty(list);
+}
+
+static const struct child *first_child(const struct list_head *list)
+{
+       return list_top(list, struct child, list);
+}
+
+static const struct child *last_child(const struct list_head *list)
+{
+       return list_tail(list, struct child, list);
+}
+
+static void check_children(const struct list_head *list)
+{
+       list_check(list, "bad child list");
+}
+
+static void print_children(const struct list_head *list)
+{
+       const struct child *c;
+       list_for_each(list, c, list)
+               printf("%s\n", c->name);
+}
+
+int main(void)
+{
+       LIST_HEAD(h);
+
+       children(&h);
+       first_child(&h);
+       last_child(&h);
+       check_children(&h);
+       print_children(&h);
+       return 0;
+}