summaryrefslogtreecommitdiff
path: root/test/testutils/foreach.c
diff options
context:
space:
mode:
authorBo Yang <struggleyb.nku@gmail.com>2009-08-11 11:17:23 +0000
committerBo Yang <struggleyb.nku@gmail.com>2009-08-11 11:17:23 +0000
commitaba54ed61e31df318abdfa165f971a11ce084608 (patch)
tree433c8bcde94fc7a6e6f2e5cbf23842a84db98146 /test/testutils/foreach.c
parent4a8212d783b6d848ac5e23b2a5151caf19ce0a4f (diff)
downloadlibdom-aba54ed61e31df318abdfa165f971a11ce084608.tar.gz
libdom-aba54ed61e31df318abdfa165f971a11ce084608.tar.bz2
Merge the branches/struggleyb/libdom-remain back to trunk.
svn path=/trunk/dom/; revision=9191
Diffstat (limited to 'test/testutils/foreach.c')
-rw-r--r--test/testutils/foreach.c96
1 files changed, 96 insertions, 0 deletions
diff --git a/test/testutils/foreach.c b/test/testutils/foreach.c
new file mode 100644
index 0000000..c3868df
--- /dev/null
+++ b/test/testutils/foreach.c
@@ -0,0 +1,96 @@
+/*
+ * This file is part of libdom test suite.
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
+ */
+
+#include <stdbool.h>
+
+#include "foreach.h"
+#include "list.h"
+
+#include <dom/dom.h>
+
+/**
+ * Please see foreach.h for the usage of the following functions
+ */
+
+void foreach_initialise_domnodelist(dom_nodelist *list, unsigned int *iterator)
+{
+ *iterator = 0;
+}
+
+void foreach_initialise_list(list *list, unsigned int *iterator)
+{
+ *iterator = 0;
+}
+
+void foreach_initialise_domnamednodemap(dom_namednodemap *map, unsigned int *iterator)
+{
+ *iterator = 0;
+}
+
+
+bool _get_next_domnodelist(dom_nodelist *list, unsigned int *iterator, dom_node **ret)
+{
+ dom_exception err;
+ unsigned long len;
+
+ err = dom_nodelist_get_length(list, &len);
+ if (err != DOM_NO_ERR)
+ return false;
+
+ if (*iterator >= len)
+ return false;
+
+ err = dom_nodelist_item(list, (*iterator), ret);
+ if (err != DOM_NO_ERR)
+ return false;
+
+ (*iterator)++;
+ return true;
+}
+
+bool get_next_list(list *list, unsigned int *iterator, void **ret)
+{
+ unsigned int len = *iterator;
+ unsigned int i = 0;
+ struct list_elt *elt = list->head;
+
+ for (; i < len; i++) {
+ if (elt == NULL)
+ return false;
+ elt = elt->next;
+ }
+
+ if (elt == NULL)
+ return false;
+
+ *ret = elt->data;
+
+ (*iterator)++;
+
+ return true;
+}
+
+bool _get_next_domnamednodemap(dom_namednodemap *map, unsigned int *iterator, dom_node **ret)
+{
+ dom_exception err;
+ unsigned long len;
+
+ err = dom_namednodemap_get_length(map, &len);
+ if (err != DOM_NO_ERR)
+ return false;
+
+ if (*iterator >= len)
+ return false;
+
+ err = dom_namednodemap_item(map, (*iterator), ret);
+ if (err != DOM_NO_ERR)
+ return false;
+
+ (*iterator)++;
+
+ return true;
+}