diff options
author | Bo Yang <struggleyb.nku@gmail.com> | 2009-08-11 11:17:23 +0000 |
---|---|---|
committer | Bo Yang <struggleyb.nku@gmail.com> | 2009-08-11 11:17:23 +0000 |
commit | aba54ed61e31df318abdfa165f971a11ce084608 (patch) | |
tree | 433c8bcde94fc7a6e6f2e5cbf23842a84db98146 /test/testutils/foreach.c | |
parent | 4a8212d783b6d848ac5e23b2a5151caf19ce0a4f (diff) | |
download | libdom-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.c | 96 |
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; +} |