Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * This file is part of libdom test suite.
  3.  * Licensed under the MIT License,
  4.  *                http://www.opensource.org/licenses/mit-license.php
  5.  * Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
  6.  */
  7.  
  8. #include <stdbool.h>
  9.  
  10. #include "foreach.h"
  11. #include "list.h"
  12.  
  13. #include <dom/dom.h>
  14.  
  15. /**
  16.  * Please see foreach.h for the usage of the following functions
  17.  */
  18.  
  19. void foreach_initialise_domnodelist(dom_nodelist *list, unsigned int *iterator)
  20. {
  21.         (void)list;
  22.         *iterator = 0;
  23. }
  24.  
  25. void foreach_initialise_list(list *list, unsigned int *iterator)
  26. {
  27.         (void)list;
  28.         *iterator = 0;
  29. }
  30.  
  31. void foreach_initialise_domnamednodemap(dom_namednodemap *map, unsigned int *iterator)
  32. {
  33.         (void)map;
  34.         *iterator = 0;
  35. }
  36.  
  37. void foreach_initialise_domhtmlcollection(dom_html_collection *coll, unsigned int *iterator)
  38. {
  39.         (void)coll;
  40.         *iterator = 0;
  41. }
  42.  
  43. bool _get_next_domnodelist(dom_nodelist *list, unsigned int *iterator, dom_node **ret)
  44. {
  45.         dom_exception err;
  46.         uint32_t len;
  47.  
  48.         err = dom_nodelist_get_length(list, &len);
  49.         if (err != DOM_NO_ERR)
  50.                 return false;
  51.  
  52.         if (*iterator >= len)
  53.                 return false;
  54.  
  55.         err = dom_nodelist_item(list, (*iterator), ret);
  56.         if (err != DOM_NO_ERR)
  57.                 return false;
  58.        
  59.         (*iterator)++;
  60.         return true;
  61. }
  62.  
  63. bool get_next_list(list *list, unsigned int *iterator, void **ret)
  64. {
  65.         unsigned int len = *iterator;
  66.         unsigned int i = 0;
  67.         struct list_elt *elt = list->head;
  68.  
  69.         for (; i < len; i++) {
  70.                 if (elt == NULL)
  71.                         return false;
  72.                 elt = elt->next;
  73.         }
  74.  
  75.         if (elt == NULL)
  76.                 return false;
  77.  
  78.         *ret = elt->data;
  79.  
  80.         (*iterator)++;
  81.  
  82.         return true;
  83. }
  84.  
  85. bool _get_next_domnamednodemap(dom_namednodemap *map, unsigned int *iterator, dom_node **ret)
  86. {
  87.         dom_exception err;
  88.         uint32_t len;
  89.  
  90.         err = dom_namednodemap_get_length(map, &len);
  91.         if (err != DOM_NO_ERR)
  92.                 return false;
  93.  
  94.         if (*iterator >= len)
  95.                 return false;
  96.  
  97.         err = dom_namednodemap_item(map, (*iterator), ret);
  98.         if (err != DOM_NO_ERR)
  99.                 return false;
  100.        
  101.         (*iterator)++; 
  102.  
  103.         return true;
  104. }
  105.  
  106. bool _get_next_domhtmlcollection(dom_html_collection *coll, unsigned int *iterator, dom_node **ret)
  107. {
  108.         dom_exception err;
  109.         uint32_t len;
  110.  
  111.         err = dom_html_collection_get_length(coll, &len);
  112.         if (err != DOM_NO_ERR)
  113.                 return false;
  114.  
  115.         if (*iterator >= len)
  116.                 return false;
  117.  
  118.         err = dom_html_collection_item(coll, (*iterator), ret);
  119.         if (err != DOM_NO_ERR)
  120.                 return false;
  121.  
  122.         (*iterator)++;
  123.  
  124.         return true;
  125. }
  126.