summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2012-07-07 13:19:13 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2012-07-07 13:19:13 +0100
commit0e1e4d37536c26a20a95960d819d68f61acff8fc (patch)
treeb4a2f7fb354809f8e94de50377581954949e2c68
parent0e51c3a8ca92d6b98339c5910de51ddc79da54bd (diff)
downloadlibdom-0e1e4d37536c26a20a95960d819d68f61acff8fc.tar.gz
libdom-0e1e4d37536c26a20a95960d819d68f61acff8fc.tar.bz2
HTMLHtmlElement: Add support for version attribute and enable test
-rw-r--r--include/dom/html/html_html_element.h30
-rw-r--r--src/html/html_html_element.c51
-rw-r--r--src/html/html_html_element.h10
-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