diff options
-rw-r--r-- | include/dom/html/html_html_element.h | 30 | ||||
-rw-r--r-- | src/html/html_html_element.c | 51 | ||||
-rw-r--r-- | src/html/html_html_element.h | 10 | ||||
-rw-r--r-- | test/testcases/tests/level1/html/HTMLHtmlElement01.xml (renamed from test/testcases/tests/level1/html/HTMLHtmlElement01.xml.kfail) | 0 |
4 files changed, 90 insertions, 1 deletions
diff --git a/include/dom/html/html_html_element.h b/include/dom/html/html_html_element.h index 80ef6af..b7b69b2 100644 --- a/include/dom/html/html_html_element.h +++ b/include/dom/html/html_html_element.h @@ -8,7 +8,37 @@ #ifndef dom_html_html_element_h_ #define dom_html_html_element_h_ +#include <dom/html/html_element.h> + typedef struct dom_html_html_element dom_html_html_element; +typedef struct dom_html_html_element_vtable { + struct dom_html_element_vtable base; + + dom_exception (*dom_html_html_element_get_version)(struct dom_html_html_element *element, + dom_string **version); + dom_exception (*dom_html_html_element_set_version)(struct dom_html_html_element *element, + dom_string *version); +} dom_html_html_element_vtable; + +static inline dom_exception dom_html_html_element_get_version( + struct dom_html_html_element *element, dom_string **version) +{ + return ((dom_html_html_element_vtable *) ((dom_node *) element)->vtable)-> + dom_html_html_element_get_version(element, version); +} +#define dom_html_html_element_get_version(e, version) \ + dom_html_html_element_get_version((dom_html_html_element *) (e), (version)) + +static inline dom_exception dom_html_html_element_set_version( + struct dom_html_html_element *element, dom_string *version) +{ + return ((dom_html_html_element_vtable *) ((dom_node *) element)->vtable)-> + dom_html_html_element_set_version(element, version); +} +#define dom_html_html_element_set_version(e, version) \ + dom_html_html_element_set_version((dom_html_html_element *) (e), (version)) + + #endif diff --git a/src/html/html_html_element.c b/src/html/html_html_element.c index 61966b2..427757a 100644 --- a/src/html/html_html_element.c +++ b/src/html/html_html_element.c @@ -7,6 +7,7 @@ #include <stdlib.h> +#include "html/html_document.h" #include "html/html_html_element.h" #include "core/node.h" @@ -19,6 +20,22 @@ static struct dom_element_protected_vtable _protect_vtable = { DOM_HTML_HTML_ELEMENT_PROTECT_VTABLE }; +static struct dom_html_html_element_vtable _vtable = { + { + { + { + { + DOM_NODE_EVENT_TARGET_VTABLE + }, + DOM_NODE_VTABLE_ELEMENT, + }, + DOM_ELEMENT_VTABLE + }, + DOM_HTML_ELEMENT_VTABLE + }, + DOM_HTML_HTML_ELEMENT_VTABLE +}; + /** * Create a dom_html_html_element object * @@ -38,7 +55,7 @@ dom_exception _dom_html_html_element_create(struct dom_html_document *doc, /* Set up vtables */ node = (struct dom_node_internal *) *ele; - node->base.vtable = &_dom_element_vtable; + node->base.vtable = &_vtable; node->vtable = &_protect_vtable; return _dom_html_html_element_initialise(doc, namespace, prefix, *ele); @@ -122,3 +139,35 @@ dom_exception _dom_html_html_element_copy(dom_node_internal *old, return _dom_html_element_copy(old, copy); } +/*-----------------------------------------------------------------------*/ +/* API functions */ + +dom_exception _dom_html_html_element_get_version(dom_html_html_element *element, + dom_string **version) +{ + dom_exception ret; + dom_string *_memo_version; + + _memo_version = + ((struct dom_html_document *) + ((struct dom_node_internal *)element)->owner)->memoised[hds_version]; + + ret = dom_element_get_attribute(element, _memo_version, version); + + return ret; +} + +dom_exception _dom_html_html_element_set_version(dom_html_html_element *element, + dom_string *version) +{ + dom_exception ret; + dom_string *_memo_version; + + _memo_version = + ((struct dom_html_document *) + ((struct dom_node_internal *)element)->owner)->memoised[hds_version]; + + ret = dom_element_set_attribute(element, _memo_version, version); + + return ret; +} diff --git a/src/html/html_html_element.h b/src/html/html_html_element.h index 61eb626..3952beb 100644 --- a/src/html/html_html_element.h +++ b/src/html/html_html_element.h @@ -48,5 +48,15 @@ dom_exception _dom_html_html_element_copy(dom_node_internal *old, _dom_virtual_html_html_element_destroy, \ _dom_html_html_element_copy +/* The API functions */ +dom_exception _dom_html_html_element_get_version(dom_html_html_element *element, + dom_string **version); +dom_exception _dom_html_html_element_set_version(dom_html_html_element *element, + dom_string *version); + +#define DOM_HTML_HTML_ELEMENT_VTABLE \ + _dom_html_html_element_get_version, \ + _dom_html_html_element_set_version + #endif diff --git a/test/testcases/tests/level1/html/HTMLHtmlElement01.xml.kfail b/test/testcases/tests/level1/html/HTMLHtmlElement01.xml index 1ad206a..1ad206a 100644 --- a/test/testcases/tests/level1/html/HTMLHtmlElement01.xml.kfail +++ b/test/testcases/tests/level1/html/HTMLHtmlElement01.xml |