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.
  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. #ifndef dom_internal_html_element_h_
  9. #define dom_internal_html_element_h_
  10.  
  11. #include <dom/html/html_element.h>
  12.  
  13. #include "core/element.h"
  14.  
  15. struct dom_html_document;
  16.  
  17. /**
  18.  * The dom_html_element class
  19.  *
  20.  */
  21. struct dom_html_element {
  22.         struct dom_element base;
  23.                         /**< The base class */
  24. };
  25.  
  26. dom_exception _dom_html_element_create(struct dom_html_document *doc,
  27.                 dom_string *name, dom_string *namespace,
  28.                 dom_string *prefix, dom_html_element **result);
  29.  
  30. dom_exception _dom_html_element_initialise(struct dom_html_document *doc,
  31.                 struct dom_html_element *el, dom_string *name,
  32.                 dom_string *namespace, dom_string *prefix);
  33.  
  34. void _dom_html_element_finalise(struct dom_html_element *ele);
  35.  
  36. /* Virtual functions */
  37. dom_exception _dom_html_element_get_elements_by_tag_name(
  38.                 struct dom_element *element, dom_string *name,
  39.                 struct dom_nodelist **result);
  40.  
  41. dom_exception _dom_html_element_get_elements_by_tag_name_ns(
  42.                 struct dom_element *element, dom_string *namespace,
  43.                 dom_string *localname, struct dom_nodelist **result);
  44.  
  45.  
  46. /* The protected virtual functions */
  47. void _dom_html_element_destroy(dom_node_internal *node);
  48. dom_exception _dom_html_element_copy(dom_node_internal *old,
  49.                 dom_node_internal **copy);
  50.  
  51. #define DOM_ELEMENT_VTABLE_HTML_ELEMENT \
  52.         _dom_element_get_tag_name, \
  53.         _dom_element_get_attribute, \
  54.         _dom_element_set_attribute, \
  55.         _dom_element_remove_attribute, \
  56.         _dom_element_get_attribute_node, \
  57.         _dom_element_set_attribute_node, \
  58.         _dom_element_remove_attribute_node, \
  59.         _dom_html_element_get_elements_by_tag_name, \
  60.         _dom_element_get_attribute_ns, \
  61.         _dom_element_set_attribute_ns, \
  62.         _dom_element_remove_attribute_ns, \
  63.         _dom_element_get_attribute_node_ns, \
  64.         _dom_element_set_attribute_node_ns, \
  65.         _dom_html_element_get_elements_by_tag_name_ns, \
  66.         _dom_element_has_attribute, \
  67.         _dom_element_has_attribute_ns, \
  68.         _dom_element_get_schema_type_info, \
  69.         _dom_element_set_id_attribute, \
  70.         _dom_element_set_id_attribute_ns, \
  71.         _dom_element_set_id_attribute_node, \
  72.         _dom_element_get_classes, \
  73.         _dom_element_has_class
  74.  
  75. #define DOM_HTML_ELEMENT_PROTECT_VTABLE \
  76.         _dom_html_element_destroy, \
  77.         _dom_html_element_copy
  78.  
  79.  
  80. /* The API functions */
  81. dom_exception _dom_html_element_get_id(dom_html_element *element,
  82.                                        dom_string **id);
  83. dom_exception _dom_html_element_set_id(dom_html_element *element,
  84.                                        dom_string *id);
  85. dom_exception _dom_html_element_get_title(dom_html_element *element,
  86.                                        dom_string **title);
  87. dom_exception _dom_html_element_set_title(dom_html_element *element,
  88.                                        dom_string *title);
  89. dom_exception _dom_html_element_get_lang(dom_html_element *element,
  90.                                        dom_string **lang);
  91. dom_exception _dom_html_element_set_lang(dom_html_element *element,
  92.                                        dom_string *lang);
  93. dom_exception _dom_html_element_get_dir(dom_html_element *element,
  94.                                        dom_string **dir);
  95. dom_exception _dom_html_element_set_dir(dom_html_element *element,
  96.                                        dom_string *dir);
  97. dom_exception _dom_html_element_get_class_name(dom_html_element *element,
  98.                                        dom_string **class_name);
  99. dom_exception _dom_html_element_set_class_name(dom_html_element *element,
  100.                                        dom_string *class_name);
  101.  
  102. #define DOM_HTML_ELEMENT_VTABLE \
  103.         _dom_html_element_get_id, \
  104.         _dom_html_element_set_id, \
  105.         _dom_html_element_get_title, \
  106.         _dom_html_element_set_title, \
  107.         _dom_html_element_get_lang, \
  108.         _dom_html_element_set_lang, \
  109.         _dom_html_element_get_dir, \
  110.         _dom_html_element_set_dir, \
  111.         _dom_html_element_get_class_name, \
  112.         _dom_html_element_set_class_name
  113.  
  114. /* Some common functions used by all child classes */
  115. dom_exception dom_html_element_get_bool_property(dom_html_element *ele,
  116.                 const char *name, uint32_t len, bool *has);
  117. dom_exception dom_html_element_set_bool_property(dom_html_element *ele,
  118.                 const char *name, uint32_t len, bool has);
  119.  
  120. dom_exception dom_html_element_get_int32_t_property(dom_html_element *ele,
  121.                 const char *name, uint32_t len, int32_t *value);
  122. dom_exception dom_html_element_set_int32_t_property(dom_html_element *ele,
  123.                 const char *name, uint32_t len, uint32_t value);
  124.  
  125. extern struct dom_html_element_vtable _dom_html_element_vtable;
  126.  
  127. #endif
  128.  
  129.