diff options
57 files changed, 502 insertions, 324 deletions
diff --git a/bindings/hubbub/parser.c b/bindings/hubbub/parser.c index a2a33ed..9dfe738 100644 --- a/bindings/hubbub/parser.c +++ b/bindings/hubbub/parser.c @@ -55,7 +55,8 @@ struct dom_hubbub_parser { }; /* Forward declaration to break reference loop */ -static hubbub_error add_attributes(void *parser, void *node, const hubbub_attribute *attributes, uint32_t n_attributes); +static hubbub_error add_attributes(void *parser, void *node, + const hubbub_attribute *attributes, uint32_t n_attributes); @@ -479,7 +480,7 @@ static hubbub_error form_associate(void *parser, void *form, void *node) /* Determine the kind of the node we have here. */ if (dom_string_caseless_isequal(ele->name, - doc->memoised[hds_BUTTON])) { + doc->elements[DOM_HTML_ELEMENT_TYPE_BUTTON])) { err = _dom_html_button_element_set_form( (dom_html_button_element *)node, form_ele); if (err != DOM_NO_ERR) { @@ -488,7 +489,7 @@ static hubbub_error form_associate(void *parser, void *form, void *node) return HUBBUB_UNKNOWN; } } else if (dom_string_caseless_isequal(ele->name, - doc->memoised[hds_INPUT])) { + doc->elements[DOM_HTML_ELEMENT_TYPE_INPUT])) { err = _dom_html_input_element_set_form( (dom_html_input_element *)node, form_ele); if (err != DOM_NO_ERR) { @@ -497,7 +498,7 @@ static hubbub_error form_associate(void *parser, void *form, void *node) return HUBBUB_UNKNOWN; } } else if (dom_string_caseless_isequal(ele->name, - doc->memoised[hds_SELECT])) { + doc->elements[DOM_HTML_ELEMENT_TYPE_SELECT])) { err = _dom_html_select_element_set_form( (dom_html_select_element *)node, form_ele); if (err != DOM_NO_ERR) { @@ -506,7 +507,7 @@ static hubbub_error form_associate(void *parser, void *form, void *node) return HUBBUB_UNKNOWN; } } else if (dom_string_caseless_isequal(ele->name, - doc->memoised[hds_TEXTAREA])) { + doc->elements[DOM_HTML_ELEMENT_TYPE_TEXTAREA])) { err = _dom_html_text_area_element_set_form( (dom_html_text_area_element *)node, form_ele); if (err != DOM_NO_ERR) { diff --git a/include/dom/html/html_elements.h b/include/dom/html/html_elements.h new file mode 100644 index 0000000..d4aec10 --- /dev/null +++ b/include/dom/html/html_elements.h @@ -0,0 +1,94 @@ +/* + * This file is part of libdom. + * Licensed under the MIT License, + * http://www.opensource.org/licenses/mit-license.php + * Copyright 2016 Michael Drake <michael.drake@codethink.co.uk> + */ + +#if !defined(dom_html_elements_h_) || defined(DOM_HTML_ELEMENT_STRINGS_ENTRY) +#define dom_html_elements_h_ + +#define DOM_HTML_ELEMENT_LIST \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(_UNKNOWN) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(HTML) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(HEAD) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(LINK) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(TITLE) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(META) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(BASE) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(ISINDEX) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(STYLE) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(BODY) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(FORM) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(SELECT) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(OPTGROUP) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(OPTION) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(INPUT) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(TEXTAREA) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(BUTTON) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(LABEL) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(FIELDSET) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(LEGEND) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(UL) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(OL) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(DL) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(DIRECTORY) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(MENU) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(LI) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(BLOCKQUOTE) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(DIV) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(P) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(H1) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(H2) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(H3) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(H4) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(H5) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(H6) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(Q) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(PRE) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(BR) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(BASEFONT) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(FONT) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(HR) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(INS) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(DEL) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(A) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(IMG) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(OBJECT) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(PARAM) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(APPLET) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(MAP) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(AREA) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(SCRIPT) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(TABLE) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(CAPTION) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(COL) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(COLGROUP) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(THEAD) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(TFOOT) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(TBODY) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(TR) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(TH) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(TD) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(FRAMESET) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(FRAME) \ + DOM_HTML_ELEMENT_STRINGS_ENTRY(IFRAME) + +/* Generate enum containing DOM_HTML_ELEMENT_<TAG_NAME> entries, + * unless the includer defined DOM_HTML_ELEMENT_STRINGS_ENTRY + * to do something else. + */ +#ifndef DOM_HTML_ELEMENT_STRINGS_ENTRY +#define DOM_HTML_ELEMENT_STRINGS_ENTRY(tag) \ + DOM_HTML_ELEMENT_TYPE_##tag, +typedef enum { +DOM_HTML_ELEMENT_LIST + DOM_HTML_ELEMENT_TYPE__COUNT +} dom_html_element_type; +#undef DOM_HTML_ELEMENT_STRINGS_ENTRY +#else +DOM_HTML_ELEMENT_LIST +#endif + +#undef DOM_HTML_ELEMENT_LIST +#endif
\ No newline at end of file diff --git a/src/html/html_anchor_element.c b/src/html/html_anchor_element.c index 77f8cef..5ad473b 100644 --- a/src/html/html_anchor_element.c +++ b/src/html/html_anchor_element.c @@ -62,8 +62,8 @@ dom_exception _dom_html_anchor_element_initialise(struct dom_html_document *doc, struct dom_html_anchor_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_A], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_A], + namespace, prefix); } /** diff --git a/src/html/html_applet_element.c b/src/html/html_applet_element.c index 9f6c16f..dedcbc5 100644 --- a/src/html/html_applet_element.c +++ b/src/html/html_applet_element.c @@ -62,7 +62,7 @@ dom_exception _dom_html_applet_element_initialise(struct dom_html_document *doc, struct dom_html_applet_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_APPLET], + doc->elements[DOM_HTML_ELEMENT_TYPE_APPLET], namespace, prefix); } diff --git a/src/html/html_area_element.c b/src/html/html_area_element.c index 85a2a3e..b3ca8dd 100644 --- a/src/html/html_area_element.c +++ b/src/html/html_area_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_area_element_initialise(struct dom_html_document *doc, struct dom_html_area_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_AREA], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_AREA], + namespace, prefix); } /** diff --git a/src/html/html_basefont_element.c b/src/html/html_basefont_element.c index 7aa20a0..f8e9249 100644 --- a/src/html/html_basefont_element.c +++ b/src/html/html_basefont_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_base_font_element_initialise(struct dom_html_document *d struct dom_html_base_font_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_BASEFONT], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_BASEFONT], + namespace, prefix); } /** diff --git a/src/html/html_body_element.c b/src/html/html_body_element.c index f2c10fe..f63583e 100644 --- a/src/html/html_body_element.c +++ b/src/html/html_body_element.c @@ -30,7 +30,7 @@ static struct dom_element_protected_vtable _protect_vtable = { * \return DOM_NO_ERR on success, appropriate dom_exception on failure. */ dom_exception _dom_html_body_element_create(struct dom_html_document *doc, - dom_string *namespace, dom_string *prefix, + dom_string *namespace, dom_string *prefix, struct dom_html_body_element **ele) { struct dom_node_internal *node; @@ -55,11 +55,12 @@ dom_exception _dom_html_body_element_create(struct dom_html_document *doc, * \return DOM_NO_ERR on success, appropriate dom_exception on failure. */ dom_exception _dom_html_body_element_initialise(struct dom_html_document *doc, - dom_string *namespace, dom_string *prefix, + dom_string *namespace, dom_string *prefix, struct dom_html_body_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_BODY], namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_BODY], + namespace, prefix); } /** diff --git a/src/html/html_br_element.c b/src/html/html_br_element.c index fbc133e..ec5acf6 100644 --- a/src/html/html_br_element.c +++ b/src/html/html_br_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_br_element_initialise(struct dom_html_document *doc, struct dom_html_br_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_BR], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_BR], + namespace, prefix); } /** diff --git a/src/html/html_button_element.c b/src/html/html_button_element.c index 95b5d31..28b694b 100644 --- a/src/html/html_button_element.c +++ b/src/html/html_button_element.c @@ -63,8 +63,8 @@ dom_exception _dom_html_button_element_initialise(struct dom_html_document *doc, ele->form = NULL; return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_BUTTON], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_BUTTON], + namespace, prefix); } /** diff --git a/src/html/html_directory_element.c b/src/html/html_directory_element.c index 4e0d9e0..0ad88ae 100644 --- a/src/html/html_directory_element.c +++ b/src/html/html_directory_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_directory_element_initialise(struct dom_html_document *d struct dom_html_directory_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_DIRECTORY], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_DIRECTORY], + namespace, prefix); } /** diff --git a/src/html/html_div_element.c b/src/html/html_div_element.c index 0c689d6..f5ef051 100644 --- a/src/html/html_div_element.c +++ b/src/html/html_div_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_div_element_initialise(struct dom_html_document *doc, struct dom_html_div_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_DIV], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_DIV], + namespace, prefix); } /** diff --git a/src/html/html_dlist_element.c b/src/html/html_dlist_element.c index 5b25037..38e3276 100644 --- a/src/html/html_dlist_element.c +++ b/src/html/html_dlist_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_dlist_element_initialise(struct dom_html_document *doc, struct dom_html_dlist_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_DL], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_DL], + namespace, prefix); } /** diff --git a/src/html/html_document.c b/src/html/html_document.c index 096c84e..c33753e 100644 --- a/src/html/html_document.c +++ b/src/html/html_document.c @@ -8,6 +8,8 @@ #include <assert.h> #include <stdlib.h> +#include <dom/html/html_elements.h> + #include "html/html_document.h" #include "html/html_element.h" #include "html/html_collection.h" @@ -134,10 +136,16 @@ dom_exception _dom_html_document_initialise(dom_html_document *doc, error = DOM_NO_MEM_ERR; goto out; } + doc->elements = calloc(sizeof(dom_string *), + DOM_HTML_ELEMENT_TYPE__COUNT); + if (doc->elements == NULL) { + error = DOM_NO_MEM_ERR; + goto out; + } -#define HTML_DOCUMENT_STRINGS_ACTION(attr,str) \ +#define HTML_DOCUMENT_STRINGS_ACTION(attr,str) \ error = dom_string_create_interned((const uint8_t *) #str, \ - SLEN(#str), &doc->memoised[hds_##attr]); \ + SLEN(#str), &doc->memoised[hds_##attr]); \ if (error != DOM_NO_ERR) { \ goto out; \ } @@ -145,15 +153,38 @@ dom_exception _dom_html_document_initialise(dom_html_document *doc, #include "html_document_strings.h" #undef HTML_DOCUMENT_STRINGS_ACTION +#define DOM_HTML_ELEMENT_STRINGS_ENTRY(tag) \ + error = dom_string_create_interned((const uint8_t *) #tag, \ + SLEN(#tag), \ + &doc->elements[DOM_HTML_ELEMENT_TYPE_##tag]); \ + if (error != DOM_NO_ERR) { \ + goto out; \ + } + +#include <dom/html/html_elements.h> +#undef DOM_HTML_ELEMENT_STRINGS_ENTRY + out: - if (doc->memoised != NULL && error != DOM_NO_ERR) { - for(sidx = 0; sidx < hds_COUNT; ++sidx) { - if (doc->memoised[sidx] != NULL) { - dom_string_unref(doc->memoised[sidx]); + if (error != DOM_NO_ERR) { + if (doc->memoised != NULL) { + for(sidx = 0; sidx < hds_COUNT; ++sidx) { + if (doc->memoised[sidx] != NULL) { + dom_string_unref(doc->memoised[sidx]); + } } + free(doc->memoised); + doc->memoised = NULL; + } + if (doc->elements != NULL) { + for(sidx = 0; sidx < DOM_HTML_ELEMENT_TYPE__COUNT; + ++sidx) { + if (doc->elements[sidx] != NULL) { + dom_string_unref(doc->elements[sidx]); + } + } + free(doc->elements); + doc->elements = NULL; } - free(doc->memoised); - doc->memoised = NULL; } return error; } @@ -184,6 +215,16 @@ bool _dom_html_document_finalise(dom_html_document *doc) doc->memoised = NULL; } + if (doc->elements != NULL) { + for(sidx = 0; sidx < DOM_HTML_ELEMENT_TYPE__COUNT; ++sidx) { + if (doc->elements[sidx] != NULL) { + dom_string_unref(doc->elements[sidx]); + } + } + free(doc->elements); + doc->elements = NULL; + } + return _dom_document_finalise(&doc->base); } @@ -222,164 +263,226 @@ _dom_html_document_create_element_internal(dom_html_document *html, if (exc != DOM_NO_ERR) return exc; - if (dom_string_caseless_isequal(tag_name, html->memoised[hds_HTML])) { + if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_HTML])) { exc = _dom_html_html_element_create(html, namespace, prefix, (dom_html_html_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_HEAD])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_HEAD])) { exc = _dom_html_head_element_create(html, namespace, prefix, (dom_html_head_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_TITLE])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_TITLE])) { exc = _dom_html_title_element_create(html, namespace, prefix, (dom_html_title_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_BODY])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_BODY])) { exc = _dom_html_body_element_create(html, namespace, prefix, (dom_html_body_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_FORM])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_FORM])) { exc = _dom_html_form_element_create(html, namespace, prefix, (dom_html_form_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_LINK])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_LINK])) { exc = _dom_html_link_element_create(html, namespace, prefix, (dom_html_link_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_BUTTON])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_BUTTON])) { exc = _dom_html_button_element_create(html, namespace, prefix, (dom_html_button_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_INPUT])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_INPUT])) { exc = _dom_html_input_element_create(html, namespace, prefix, (dom_html_input_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_TEXTAREA])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_TEXTAREA])) { exc = _dom_html_text_area_element_create(html, namespace, prefix, (dom_html_text_area_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_OPTGROUP])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_OPTGROUP])) { exc = _dom_html_opt_group_element_create(html, namespace, prefix, (dom_html_opt_group_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_OPTION])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_OPTION])) { exc = _dom_html_option_element_create(html, namespace, prefix, (dom_html_option_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_SELECT])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_SELECT])) { exc = _dom_html_select_element_create(html, namespace, prefix, (dom_html_select_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_HR])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_HR])) { exc = _dom_html_hr_element_create(html, namespace, prefix, (dom_html_hr_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_DL])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_DL])) { exc = _dom_html_dlist_element_create(html, namespace, prefix, (dom_html_dlist_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_DIRECTORY])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_DIRECTORY])) { exc = _dom_html_directory_element_create(html, namespace, prefix, (dom_html_directory_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_MENU])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_MENU])) { exc = _dom_html_menu_element_create(html, namespace, prefix, (dom_html_menu_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_FIELDSET])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_FIELDSET])) { exc = _dom_html_field_set_element_create(html, namespace, prefix, (dom_html_field_set_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_LEGEND])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_LEGEND])) { exc = _dom_html_legend_element_create(html, namespace, prefix, (dom_html_legend_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_P])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_P])) { exc = _dom_html_paragraph_element_create(html, namespace, prefix, (dom_html_paragraph_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_H1]) || - dom_string_caseless_isequal(tag_name, html->memoised[hds_H2]) || - dom_string_caseless_isequal(tag_name, html->memoised[hds_H3]) || - dom_string_caseless_isequal(tag_name, html->memoised[hds_H4]) || - dom_string_caseless_isequal(tag_name, html->memoised[hds_H5]) || - dom_string_caseless_isequal(tag_name, html->memoised[hds_H6]) - ) { - exc = _dom_html_heading_element_create(html, tag_name, namespace, prefix, + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_H1]) || + dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_H2]) || + dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_H3]) || + dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_H4]) || + dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_H5]) || + dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_H6])) { + exc = _dom_html_heading_element_create(html, tag_name, + namespace, prefix, (dom_html_heading_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_Q])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_Q])) { exc = _dom_html_quote_element_create(html, namespace, prefix, (dom_html_quote_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_PRE])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_PRE])) { exc = _dom_html_pre_element_create(html, namespace, prefix, (dom_html_pre_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_BR])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_BR])) { exc = _dom_html_br_element_create(html, namespace, prefix, (dom_html_br_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_LABEL])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_LABEL])) { exc = _dom_html_label_element_create(html, namespace, prefix, (dom_html_label_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_UL])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_UL])) { exc = _dom_html_u_list_element_create(html, namespace, prefix, (dom_html_u_list_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_OL])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_OL])) { exc = _dom_html_olist_element_create(html, namespace, prefix, (dom_html_olist_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_LI])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_LI])) { exc = _dom_html_li_element_create(html, namespace, prefix, (dom_html_li_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_FONT])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_FONT])) { exc = _dom_html_font_element_create(html, namespace, prefix, (dom_html_font_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_DEL]) || - dom_string_caseless_isequal(tag_name, html->memoised[hds_INS])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_DEL]) || + dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_INS])) { exc = _dom_html_mod_element_create(html, tag_name, namespace, prefix, (dom_html_mod_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_A])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_A])) { exc = _dom_html_anchor_element_create(html, namespace, prefix, (dom_html_anchor_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_BASEFONT])) { - exc = _dom_html_base_font_element_create(html, namespace, prefix, + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_BASEFONT])) { + exc = _dom_html_base_font_element_create(html, + namespace, prefix, (dom_html_base_font_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_IMG])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_IMG])) { exc = _dom_html_image_element_create(html, namespace, prefix, (dom_html_image_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_OBJECT])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_OBJECT])) { exc = _dom_html_object_element_create(html, namespace, prefix, (dom_html_object_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_PARAM])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_PARAM])) { exc = _dom_html_param_element_create(html, namespace, prefix, (dom_html_param_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_APPLET])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_APPLET])) { exc = _dom_html_applet_element_create(html, namespace, prefix, (dom_html_applet_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_MAP])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_MAP])) { exc = _dom_html_map_element_create(html, namespace, prefix, (dom_html_map_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_AREA])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_AREA])) { exc = _dom_html_area_element_create(html, namespace, prefix, (dom_html_area_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_SCRIPT])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_SCRIPT])) { exc = _dom_html_script_element_create(html, namespace, prefix, (dom_html_script_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_CAPTION])) { - exc = _dom_html_table_caption_element_create(html, namespace, prefix, + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_CAPTION])) { + exc = _dom_html_table_caption_element_create(html, + namespace, prefix, (dom_html_table_caption_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_TD]) || - dom_string_caseless_isequal(tag_name, html->memoised[hds_TH]) - ) { - exc = _dom_html_table_cell_element_create(html, tag_name, namespace, prefix, + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_TD]) || + dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_TH])) { + exc = _dom_html_table_cell_element_create(html, tag_name, + namespace, prefix, (dom_html_table_cell_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_COL])|| - dom_string_caseless_isequal(tag_name, html->memoised[hds_COLGROUP]) - ) { - exc = _dom_html_table_col_element_create(html, tag_name, namespace, prefix, + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_COL])|| + dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_COLGROUP])) { + exc = _dom_html_table_col_element_create(html, tag_name, + namespace, prefix, (dom_html_table_col_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_THEAD])|| - dom_string_caseless_isequal(tag_name, html->memoised[hds_TBODY])|| - dom_string_caseless_isequal(tag_name, html->memoised[hds_TFOOT])) { - exc = _dom_html_table_section_element_create(html, tag_name, namespace, prefix, + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_THEAD])|| + dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_TBODY])|| + dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_TFOOT])) { + exc = _dom_html_table_section_element_create(html, tag_name, + namespace, prefix, (dom_html_table_section_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_TABLE])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_TABLE])) { exc = _dom_html_table_element_create(html, namespace, prefix, (dom_html_table_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_TD])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_TD])) { exc = _dom_html_table_row_element_create(html, namespace, prefix, (dom_html_table_row_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_STYLE])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_STYLE])) { exc = _dom_html_style_element_create(html, (dom_html_style_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_FRAMESET])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_FRAMESET])) { exc = _dom_html_frame_set_element_create(html, namespace, prefix, (dom_html_frame_set_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_FRAME])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_FRAME])) { exc = _dom_html_frame_element_create(html, namespace, prefix, (dom_html_frame_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_IFRAME])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_IFRAME])) { exc = _dom_html_iframe_element_create(html, namespace, prefix, (dom_html_iframe_element **) result); - } else if (dom_string_caseless_isequal(tag_name, html->memoised[hds_ISINDEX])) { + } else if (dom_string_caseless_isequal(tag_name, + html->elements[DOM_HTML_ELEMENT_TYPE_ISINDEX])) { exc = _dom_html_isindex_element_create(html, namespace, prefix, (dom_html_isindex_element **) result); } else { @@ -576,8 +679,8 @@ dom_exception _dom_html_document_get_title(dom_html_document *doc, uint32_t len; exc = dom_document_get_elements_by_tag_name(doc, - doc->memoised[hds_TITLE], - &nodes); + doc->elements[DOM_HTML_ELEMENT_TYPE_TITLE], + &nodes); if (exc != DOM_NO_ERR) { return exc; } @@ -654,7 +757,7 @@ dom_exception _dom_html_document_get_body(dom_html_document *doc, uint32_t len; exc = dom_document_get_elements_by_tag_name(doc, - doc->memoised[hds_BODY], + doc->elements[DOM_HTML_ELEMENT_TYPE_BODY], &nodes); if (exc != DOM_NO_ERR) { return exc; @@ -668,7 +771,7 @@ dom_exception _dom_html_document_get_body(dom_html_document *doc, if (len == 0) { exc = dom_document_get_elements_by_tag_name(doc, - doc->memoised[hds_FRAMESET], + doc->elements[DOM_HTML_ELEMENT_TYPE_FRAMESET], &nodes); if (exc != DOM_NO_ERR) { return exc; @@ -713,9 +816,10 @@ dom_exception _dom_html_document_set_body(dom_html_document *doc, */ bool images_callback(struct dom_node_internal *node, void *ctx) { + dom_html_document *doc = ctx; if(node->type == DOM_ELEMENT_NODE && dom_string_caseless_isequal(node->name, - ((dom_html_document *)ctx)->memoised[hds_IMG])) { + doc->elements[DOM_HTML_ELEMENT_TYPE_IMG])) { return true; } return false; @@ -736,9 +840,10 @@ dom_exception _dom_html_document_get_images(dom_html_document *doc, bool applet_callback(struct dom_node_internal * node, void *ctx) { + dom_html_document *doc = ctx; if(node->type == DOM_ELEMENT_NODE && dom_string_caseless_isequal(node->name, - ((dom_html_document *)ctx)->memoised[hds_APPLET])) { + doc->elements[DOM_HTML_ELEMENT_TYPE_APPLET])) { return true; } return false; @@ -752,9 +857,10 @@ bool applet_callback(struct dom_node_internal * node, void *ctx) */ bool applets_callback(struct dom_node_internal *node, void *ctx) { + dom_html_document *doc = ctx; if(node->type == DOM_ELEMENT_NODE && dom_string_caseless_isequal(node->name, - ((dom_html_document *)ctx)->memoised[hds_OBJECT])) { + doc->elements[DOM_HTML_ELEMENT_TYPE_OBJECT])) { uint32_t len = 0; dom_html_collection *applets; if (_dom_html_collection_create(ctx, node, @@ -790,17 +896,18 @@ dom_exception _dom_html_document_get_applets(dom_html_document *doc, */ bool links_callback(struct dom_node_internal *node, void *ctx) { + dom_html_document *doc = ctx; if(node->type == DOM_ELEMENT_NODE && (dom_string_caseless_isequal(node->name, - ((dom_html_document *)ctx)->memoised[hds_A]) || + doc->elements[DOM_HTML_ELEMENT_TYPE_A]) || dom_string_caseless_isequal(node->name, - ((dom_html_document *)ctx)->memoised[hds_AREA])) + doc->elements[DOM_HTML_ELEMENT_TYPE_AREA])) ) { bool has_value = false; dom_exception err; err = dom_element_has_attribute(node, - ((dom_html_document *)ctx)->memoised[hds_href], &has_value); + doc->memoised[hds_href], &has_value); if(err !=DOM_NO_ERR) return err; @@ -831,7 +938,7 @@ static bool __dom_html_document_node_is_form(dom_node_internal *node, UNUSED(ctx); return dom_string_caseless_isequal(node->name, - doc->memoised[hds_FORM]); + doc->elements[DOM_HTML_ELEMENT_TYPE_FORM]); } dom_exception _dom_html_document_get_forms(dom_html_document *doc, @@ -868,14 +975,15 @@ dom_exception _dom_html_document_get_forms(dom_html_document *doc, */ bool anchors_callback(struct dom_node_internal *node, void *ctx) { + dom_html_document *doc = ctx; if(node->type == DOM_ELEMENT_NODE && dom_string_caseless_isequal(node->name, - ((dom_html_document *)ctx)->memoised[hds_A])) { + doc->elements[DOM_HTML_ELEMENT_TYPE_A])) { bool has_value = false; dom_exception err; err = dom_element_has_attribute(node, - ((dom_html_document *)ctx)->memoised[hds_name], &has_value); + doc->memoised[hds_name], &has_value); if(err !=DOM_NO_ERR) return err; diff --git a/src/html/html_document.h b/src/html/html_document.h index c00529b..dab4dc6 100644 --- a/src/html/html_document.h +++ b/src/html/html_document.h @@ -28,6 +28,8 @@ struct dom_html_document { /** Cached strings for html objects to use */ dom_string **memoised; + /** Cached strings for HTML element names */ + dom_string **elements; }; #include "html_document_strings.h" diff --git a/src/html/html_document_strings.h b/src/html/html_document_strings.h index 35fca73..8b5fea7 100644 --- a/src/html/html_document_strings.h +++ b/src/html/html_document_strings.h @@ -145,70 +145,6 @@ HTML_DOCUMENT_STRINGS_ACTION1(select) HTML_DOCUMENT_STRINGS_ACTION1(click) HTML_DOCUMENT_STRINGS_ACTION1(submit) HTML_DOCUMENT_STRINGS_ACTION1(reset) -/* Names for elements which get specialised. */ -HTML_DOCUMENT_STRINGS_ACTION1(HTML) -HTML_DOCUMENT_STRINGS_ACTION1(HEAD) -HTML_DOCUMENT_STRINGS_ACTION1(LINK) -HTML_DOCUMENT_STRINGS_ACTION1(TITLE) -HTML_DOCUMENT_STRINGS_ACTION1(META) -HTML_DOCUMENT_STRINGS_ACTION1(BASE) -HTML_DOCUMENT_STRINGS_ACTION1(ISINDEX) -HTML_DOCUMENT_STRINGS_ACTION1(STYLE) -HTML_DOCUMENT_STRINGS_ACTION1(BODY) -HTML_DOCUMENT_STRINGS_ACTION1(FORM) -HTML_DOCUMENT_STRINGS_ACTION1(SELECT) -HTML_DOCUMENT_STRINGS_ACTION1(OPTGROUP) -HTML_DOCUMENT_STRINGS_ACTION1(OPTION) -HTML_DOCUMENT_STRINGS_ACTION1(INPUT) -HTML_DOCUMENT_STRINGS_ACTION1(TEXTAREA) -HTML_DOCUMENT_STRINGS_ACTION1(BUTTON) -HTML_DOCUMENT_STRINGS_ACTION1(LABEL) -HTML_DOCUMENT_STRINGS_ACTION1(FIELDSET) -HTML_DOCUMENT_STRINGS_ACTION1(LEGEND) -HTML_DOCUMENT_STRINGS_ACTION1(UL) -HTML_DOCUMENT_STRINGS_ACTION1(OL) -HTML_DOCUMENT_STRINGS_ACTION1(DL) -HTML_DOCUMENT_STRINGS_ACTION1(DIRECTORY) -HTML_DOCUMENT_STRINGS_ACTION1(MENU) -HTML_DOCUMENT_STRINGS_ACTION1(LI) -HTML_DOCUMENT_STRINGS_ACTION1(BLOCKQUOTE) -HTML_DOCUMENT_STRINGS_ACTION1(DIV) -HTML_DOCUMENT_STRINGS_ACTION1(P) -HTML_DOCUMENT_STRINGS_ACTION1(H1) -HTML_DOCUMENT_STRINGS_ACTION1(H2) -HTML_DOCUMENT_STRINGS_ACTION1(H3) -HTML_DOCUMENT_STRINGS_ACTION1(H4) -HTML_DOCUMENT_STRINGS_ACTION1(H5) -HTML_DOCUMENT_STRINGS_ACTION1(H6) -HTML_DOCUMENT_STRINGS_ACTION1(Q) -HTML_DOCUMENT_STRINGS_ACTION1(PRE) -HTML_DOCUMENT_STRINGS_ACTION1(BR) -HTML_DOCUMENT_STRINGS_ACTION1(BASEFONT) -HTML_DOCUMENT_STRINGS_ACTION1(FONT) -HTML_DOCUMENT_STRINGS_ACTION1(HR) -HTML_DOCUMENT_STRINGS_ACTION1(INS) -HTML_DOCUMENT_STRINGS_ACTION1(DEL) -HTML_DOCUMENT_STRINGS_ACTION1(A) -HTML_DOCUMENT_STRINGS_ACTION1(IMG) -HTML_DOCUMENT_STRINGS_ACTION1(OBJECT) -HTML_DOCUMENT_STRINGS_ACTION1(PARAM) -HTML_DOCUMENT_STRINGS_ACTION1(APPLET) -HTML_DOCUMENT_STRINGS_ACTION1(MAP) -HTML_DOCUMENT_STRINGS_ACTION1(AREA) -HTML_DOCUMENT_STRINGS_ACTION1(SCRIPT) -HTML_DOCUMENT_STRINGS_ACTION1(TABLE) -HTML_DOCUMENT_STRINGS_ACTION1(CAPTION) -HTML_DOCUMENT_STRINGS_ACTION1(COL) -HTML_DOCUMENT_STRINGS_ACTION1(COLGROUP) -HTML_DOCUMENT_STRINGS_ACTION1(THEAD) -HTML_DOCUMENT_STRINGS_ACTION1(TFOOT) -HTML_DOCUMENT_STRINGS_ACTION1(TBODY) -HTML_DOCUMENT_STRINGS_ACTION1(TR) -HTML_DOCUMENT_STRINGS_ACTION1(TH) -HTML_DOCUMENT_STRINGS_ACTION1(TD) -HTML_DOCUMENT_STRINGS_ACTION1(FRAMESET) -HTML_DOCUMENT_STRINGS_ACTION1(FRAME) -HTML_DOCUMENT_STRINGS_ACTION1(IFRAME) #ifdef HTML_DOCUMENT_STRINGS_SUFFIX HTML_DOCUMENT_STRINGS_SUFFIX diff --git a/src/html/html_element.h b/src/html/html_element.h index e742a1a..e32b09e 100644 --- a/src/html/html_element.h +++ b/src/html/html_element.h @@ -9,6 +9,7 @@ #define dom_internal_html_element_h_ #include <dom/html/html_element.h> +#include <dom/html/html_elements.h> #include "core/element.h" diff --git a/src/html/html_fieldset_element.c b/src/html/html_fieldset_element.c index 2ab873e..15ea812 100644 --- a/src/html/html_fieldset_element.c +++ b/src/html/html_fieldset_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_field_set_element_initialise(struct dom_html_document *d struct dom_html_field_set_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_FIELDSET], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_FIELDSET], + namespace, prefix); } /** @@ -136,7 +136,7 @@ dom_exception dom_html_field_set_element_get_form( while (form_tmp != NULL) { if (form_tmp->type == DOM_ELEMENT_NODE && dom_string_caseless_isequal(form_tmp->name, - doc->memoised[hds_FORM])) + doc->elements[DOM_HTML_ELEMENT_TYPE_FORM])) break; form_tmp = form_tmp->parent; diff --git a/src/html/html_font_element.c b/src/html/html_font_element.c index aadcb22..0be7ee5 100644 --- a/src/html/html_font_element.c +++ b/src/html/html_font_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_font_element_initialise(struct dom_html_document *doc, struct dom_html_font_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_FONT], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_FONT], + namespace, prefix); } /** diff --git a/src/html/html_form_element.c b/src/html/html_form_element.c index 0606ba6..ee62c02 100644 --- a/src/html/html_form_element.c +++ b/src/html/html_form_element.c @@ -70,8 +70,8 @@ dom_exception _dom_html_form_element_initialise(struct dom_html_document *doc, dom_exception err; err = _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_FORM], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_FORM], + namespace, prefix); return err; } @@ -283,16 +283,16 @@ static bool _dom_is_form_control(struct dom_node_internal *node, void *ctx) /* Form controls are INPUT TEXTAREA SELECT and BUTTON*/ if (dom_string_caseless_isequal(node->name, - doc->memoised[hds_INPUT])) + doc->elements[DOM_HTML_ELEMENT_TYPE_INPUT])) return ((dom_html_input_element *)node)->form == form; if (dom_string_caseless_isequal(node->name, - doc->memoised[hds_TEXTAREA])) + doc->elements[DOM_HTML_ELEMENT_TYPE_TEXTAREA])) return ((dom_html_text_area_element *)node)->form == form; if (dom_string_caseless_isequal(node->name, - doc->memoised[hds_SELECT])) + doc->elements[DOM_HTML_ELEMENT_TYPE_SELECT])) return ((dom_html_select_element *)node)->form == form; if (dom_string_caseless_isequal(node->name, - doc->memoised[hds_BUTTON])) { + doc->elements[DOM_HTML_ELEMENT_TYPE_BUTTON])) { return ((dom_html_button_element *)node)->form == form; } diff --git a/src/html/html_frame_element.c b/src/html/html_frame_element.c index 9e1ea1e..b8b0a74 100644 --- a/src/html/html_frame_element.c +++ b/src/html/html_frame_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_frame_element_initialise(struct dom_html_document *doc, struct dom_html_frame_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_FRAME], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_FRAME], + namespace, prefix); } /** @@ -97,7 +97,7 @@ dom_exception dom_html_frame_element_get_no_resize(dom_html_frame_element *ele, bool *no_resize) { return dom_html_element_get_bool_property(&ele->base, "noresize", - SLEN("noresize"), no_resize); + SLEN("noresize"), no_resize); } /** @@ -111,7 +111,7 @@ dom_exception dom_html_frame_element_set_no_resize(dom_html_frame_element *ele, bool no_resize) { return dom_html_element_set_bool_property(&ele->base, "noresize", - SLEN("noresize"), no_resize); + SLEN("noresize"), no_resize); } /*------------------------------------------------------------------------*/ diff --git a/src/html/html_frameset_element.c b/src/html/html_frameset_element.c index 871906b..9d9680b 100644 --- a/src/html/html_frameset_element.c +++ b/src/html/html_frameset_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_frame_set_element_initialise(struct dom_html_document *d struct dom_html_frame_set_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_FRAMESET], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_FRAMESET], + namespace, prefix); } /** diff --git a/src/html/html_head_element.c b/src/html/html_head_element.c index 00d4476..7082cef 100644 --- a/src/html/html_head_element.c +++ b/src/html/html_head_element.c @@ -57,8 +57,8 @@ dom_exception _dom_html_head_element_initialise(struct dom_html_document *doc, struct dom_html_head_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_HEAD], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_HEAD], + namespace, prefix); } /** diff --git a/src/html/html_heading_element.c b/src/html/html_heading_element.c index ba2842f..ce298fb 100644 --- a/src/html/html_heading_element.c +++ b/src/html/html_heading_element.c @@ -63,8 +63,7 @@ dom_exception _dom_html_heading_element_initialise(struct dom_html_document *doc dom_string *prefix, struct dom_html_heading_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - tag_name, namespace, - prefix); + tag_name, namespace, prefix); } /** diff --git a/src/html/html_hr_element.c b/src/html/html_hr_element.c index eb8aa68..7ecab7a 100644 --- a/src/html/html_hr_element.c +++ b/src/html/html_hr_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_hr_element_initialise(struct dom_html_document *doc, struct dom_html_hr_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_HR], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_HR], + namespace, prefix); } /** diff --git a/src/html/html_html_element.c b/src/html/html_html_element.c index ee26019..0a91efe 100644 --- a/src/html/html_html_element.c +++ b/src/html/html_html_element.c @@ -28,7 +28,7 @@ static struct dom_element_protected_vtable _protect_vtable = { * \return DOM_NO_ERR on success, appropriate dom_exception on failure. */ dom_exception _dom_html_html_element_create(struct dom_html_document *doc, - dom_string *namespace, dom_string *prefix, + dom_string *namespace, dom_string *prefix, struct dom_html_html_element **ele) { struct dom_node_internal *node; @@ -53,11 +53,12 @@ dom_exception _dom_html_html_element_create(struct dom_html_document *doc, * \return DOM_NO_ERR on success, appropriate dom_exception on failure. */ dom_exception _dom_html_html_element_initialise(struct dom_html_document *doc, - dom_string *namespace, dom_string *prefix, + dom_string *namespace, dom_string *prefix, struct dom_html_html_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_HTML], namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_HTML], + namespace, prefix); } /** diff --git a/src/html/html_iframe_element.c b/src/html/html_iframe_element.c index 41a30d9..80b39a7 100644 --- a/src/html/html_iframe_element.c +++ b/src/html/html_iframe_element.c @@ -46,7 +46,8 @@ dom_exception _dom_html_iframe_element_create(struct dom_html_document *doc, node->base.vtable = &_dom_html_element_vtable; node->vtable = &_protect_vtable; - return _dom_html_iframe_element_initialise(doc, namespace, prefix, *ele); + return _dom_html_iframe_element_initialise(doc, + namespace, prefix, *ele); } /** @@ -61,8 +62,8 @@ dom_exception _dom_html_iframe_element_initialise(struct dom_html_document *doc, struct dom_html_iframe_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_IFRAME], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_IFRAME], + namespace, prefix); } /** diff --git a/src/html/html_image_element.c b/src/html/html_image_element.c index fe20cfa..4c5a5f3 100644 --- a/src/html/html_image_element.c +++ b/src/html/html_image_element.c @@ -62,8 +62,8 @@ dom_exception _dom_html_image_element_initialise(struct dom_html_document *doc, struct dom_html_image_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_IMG], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_IMG], + namespace, prefix); } /** diff --git a/src/html/html_input_element.c b/src/html/html_input_element.c index bbea087..a90ec40 100644 --- a/src/html/html_input_element.c +++ b/src/html/html_input_element.c @@ -69,8 +69,8 @@ dom_exception _dom_html_input_element_initialise(struct dom_html_document *doc, ele->checked_set = false; return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_INPUT], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_INPUT], + namespace, prefix); } /** diff --git a/src/html/html_isindex_element.c b/src/html/html_isindex_element.c index e79e011..51611b3 100644 --- a/src/html/html_isindex_element.c +++ b/src/html/html_isindex_element.c @@ -59,8 +59,8 @@ dom_exception _dom_html_isindex_element_initialise(struct dom_html_document *doc struct dom_html_isindex_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_ISINDEX], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_ISINDEX], + namespace, prefix); } /** diff --git a/src/html/html_label_element.c b/src/html/html_label_element.c index c3a522f..2303892 100644 --- a/src/html/html_label_element.c +++ b/src/html/html_label_element.c @@ -59,7 +59,7 @@ dom_exception _dom_html_label_element_initialise(struct dom_html_document *doc, struct dom_html_label_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_LABEL], + doc->elements[DOM_HTML_ELEMENT_TYPE_LABEL], namespace, prefix); } @@ -133,7 +133,7 @@ dom_exception dom_html_label_element_get_form( while (form_tmp != NULL) { if (form_tmp->type == DOM_ELEMENT_NODE && dom_string_caseless_isequal(form_tmp->name, - doc->memoised[hds_FORM])) + doc->elements[DOM_HTML_ELEMENT_TYPE_FORM])) break; form_tmp = form_tmp->parent; diff --git a/src/html/html_legend_element.c b/src/html/html_legend_element.c index 2d0e939..1f297e2 100644 --- a/src/html/html_legend_element.c +++ b/src/html/html_legend_element.c @@ -63,8 +63,8 @@ dom_exception _dom_html_legend_element_initialise(struct dom_html_document *doc, struct dom_html_legend_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_LEGEND], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_LEGEND], + namespace, prefix); } /** @@ -106,7 +106,7 @@ dom_exception dom_html_legend_element_get_form( while (field_set != NULL) { if (field_set->type == DOM_ELEMENT_NODE && dom_string_caseless_isequal(field_set->name, - doc->memoised[hds_FIELDSET])) + doc->elements[DOM_HTML_ELEMENT_TYPE_FIELDSET])) break; field_set = field_set->parent; diff --git a/src/html/html_li_element.c b/src/html/html_li_element.c index 7dd1d5b..f2c560e 100644 --- a/src/html/html_li_element.c +++ b/src/html/html_li_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_li_element_initialise(struct dom_html_document *doc, struct dom_html_li_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_LI], - namespace, lifix); + doc->elements[DOM_HTML_ELEMENT_TYPE_LI], + namespace, lifix); } /** diff --git a/src/html/html_link_element.c b/src/html/html_link_element.c index 7ed026d..8022a7b 100644 --- a/src/html/html_link_element.c +++ b/src/html/html_link_element.c @@ -59,8 +59,8 @@ dom_exception _dom_html_link_element_initialise(struct dom_html_document *doc, struct dom_html_link_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_LINK], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_LINK], + namespace, prefix); } /** diff --git a/src/html/html_map_element.c b/src/html/html_map_element.c index cf0fe5e..d20c3ce 100644 --- a/src/html/html_map_element.c +++ b/src/html/html_map_element.c @@ -63,8 +63,8 @@ dom_exception _dom_html_map_element_initialise(struct dom_html_document *doc, struct dom_html_map_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_MAP], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_MAP], + namespace, prefix); } /** @@ -163,11 +163,11 @@ dom_exception dom_html_map_element_set_##attr( \ SIMPLE_GET_SET(name); /* The callback function for _dom_html_collection_create*/ -bool callback(struct dom_node_internal *node, void *ctx) +bool callback(struct dom_node_internal *node, void *ctx) { if(node->type == DOM_ELEMENT_NODE && dom_string_caseless_isequal(node->name, - ((dom_html_document *)ctx)->memoised[hds_AREA])) + ((dom_html_document *)ctx)->elements[DOM_HTML_ELEMENT_TYPE_AREA])) { return true; } diff --git a/src/html/html_menu_element.c b/src/html/html_menu_element.c index af0f34c..aadd823 100644 --- a/src/html/html_menu_element.c +++ b/src/html/html_menu_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_menu_element_initialise(struct dom_html_document *doc, struct dom_html_menu_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_MENU], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_MENU], + namespace, prefix); } /** diff --git a/src/html/html_meta_element.c b/src/html/html_meta_element.c index 924a64d..05e6a4f 100644 --- a/src/html/html_meta_element.c +++ b/src/html/html_meta_element.c @@ -57,8 +57,8 @@ dom_exception _dom_html_meta_element_initialise(struct dom_html_document *doc, struct dom_html_meta_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_META], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_META], + namespace, prefix); } /** diff --git a/src/html/html_mod_element.c b/src/html/html_mod_element.c index f20a994..20f80d1 100644 --- a/src/html/html_mod_element.c +++ b/src/html/html_mod_element.c @@ -61,8 +61,7 @@ dom_exception _dom_html_mod_element_initialise(struct dom_html_document *doc, dom_string *prefix, struct dom_html_mod_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - tag_name, - namespace, prefix); + tag_name, namespace, prefix); } /** diff --git a/src/html/html_object_element.c b/src/html/html_object_element.c index 1568630..27d3f5a 100644 --- a/src/html/html_object_element.c +++ b/src/html/html_object_element.c @@ -64,7 +64,7 @@ dom_exception _dom_html_object_element_initialise(struct dom_html_document *doc, struct dom_html_object_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_OBJECT], + doc->elements[DOM_HTML_ELEMENT_TYPE_OBJECT], namespace, prefix); } @@ -240,7 +240,7 @@ dom_exception dom_html_object_element_get_form( while (form_tmp != NULL) { if (form_tmp->type == DOM_ELEMENT_NODE && dom_string_caseless_isequal(form_tmp->name, - doc->memoised[hds_FORM])) + doc->elements[DOM_HTML_ELEMENT_TYPE_FORM])) break; form_tmp = form_tmp->parent; diff --git a/src/html/html_olist_element.c b/src/html/html_olist_element.c index 3046553..6595ea5 100644 --- a/src/html/html_olist_element.c +++ b/src/html/html_olist_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_olist_element_initialise(struct dom_html_document *doc, struct dom_html_olist_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_OL], - namespace, o_listfix); + doc->elements[DOM_HTML_ELEMENT_TYPE_OL], + namespace, o_listfix); } /** diff --git a/src/html/html_opt_group_element.c b/src/html/html_opt_group_element.c index cb0c207..cdee6e7 100644 --- a/src/html/html_opt_group_element.c +++ b/src/html/html_opt_group_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_opt_group_element_initialise(struct dom_html_document *d struct dom_html_opt_group_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_OPTGROUP], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_OPTGROUP], + namespace, prefix); } /** diff --git a/src/html/html_option_element.c b/src/html/html_option_element.c index b777c5f..e352562 100644 --- a/src/html/html_option_element.c +++ b/src/html/html_option_element.c @@ -66,8 +66,8 @@ dom_exception _dom_html_option_element_initialise(struct dom_html_document *doc, ele->default_selected_set = false; return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_OPTION], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_OPTION], + namespace, prefix); } /** @@ -106,7 +106,7 @@ dom_exception dom_html_option_element_get_form( while (select != NULL) { if (select->type == DOM_ELEMENT_NODE && dom_string_caseless_isequal(select->name, - doc->memoised[hds_SELECT])) + doc->elements[DOM_HTML_ELEMENT_TYPE_SELECT])) break; select = select->parent; @@ -265,7 +265,7 @@ dom_exception dom_html_option_element_get_index( if((dom_node_internal *)option == n) { *index = idx; break; - } else if(dom_string_caseless_isequal(n->name,doc->memoised[hds_OPTION])) { + } else if(dom_string_caseless_isequal(n->name,doc->elements[DOM_HTML_ELEMENT_TYPE_OPTION])) { idx += 1; } } diff --git a/src/html/html_options_collection.c b/src/html/html_options_collection.c index 3e06915..8f6f4c4 100644 --- a/src/html/html_options_collection.c +++ b/src/html/html_options_collection.c @@ -41,7 +41,7 @@ dom_exception _dom_html_options_collection_create(struct dom_html_document *doc, return DOM_NO_MEM_ERR; return _dom_html_options_collection_initialise(doc, *col, root, - ic, ctx); + ic, ctx); } /** diff --git a/src/html/html_paragraph_element.c b/src/html/html_paragraph_element.c index 20a6c28..63c50b2 100644 --- a/src/html/html_paragraph_element.c +++ b/src/html/html_paragraph_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_paragraph_element_initialise(struct dom_html_document *d struct dom_html_paragraph_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_P], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_P], + namespace, prefix); } /** diff --git a/src/html/html_param_element.c b/src/html/html_param_element.c index 6bda015..a858717 100644 --- a/src/html/html_param_element.c +++ b/src/html/html_param_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_param_element_initialise(struct dom_html_document *doc, struct dom_html_param_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_PARAM], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_PARAM], + namespace, prefix); } /** diff --git a/src/html/html_pre_element.c b/src/html/html_pre_element.c index 8f564c2..c5f7ced 100644 --- a/src/html/html_pre_element.c +++ b/src/html/html_pre_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_pre_element_initialise(struct dom_html_document *doc, struct dom_html_pre_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_PRE], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_PRE], + namespace, prefix); } /** diff --git a/src/html/html_quote_element.c b/src/html/html_quote_element.c index d16bad8..988ef5b 100644 --- a/src/html/html_quote_element.c +++ b/src/html/html_quote_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_quote_element_initialise(struct dom_html_document *doc, struct dom_html_quote_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_Q], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_Q], + namespace, prefix); } /** diff --git a/src/html/html_script_element.c b/src/html/html_script_element.c index e0038f5..3bdf8cd 100644 --- a/src/html/html_script_element.c +++ b/src/html/html_script_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_script_element_initialise(struct dom_html_document *doc, struct dom_html_script_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_SCRIPT], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_SCRIPT], + namespace, prefix); } /** diff --git a/src/html/html_select_element.c b/src/html/html_select_element.c index 3d199bb..438a365 100644 --- a/src/html/html_select_element.c +++ b/src/html/html_select_element.c @@ -65,7 +65,7 @@ dom_exception _dom_html_select_element_initialise(struct dom_html_document *doc, ele->form = NULL; return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_SELECT], + doc->elements[DOM_HTML_ELEMENT_TYPE_SELECT], namespace, prefix); } @@ -695,7 +695,8 @@ bool is_option(struct dom_node_internal *node, void *ctx) dom_html_select_element *ele = ctx; dom_html_document *doc = (dom_html_document *) dom_node_get_owner(ele); - if (dom_string_isequal(node->name, doc->memoised[hds_OPTION])) + if (dom_string_isequal(node->name, + doc->elements[DOM_HTML_ELEMENT_TYPE_OPTION])) return true; return false; diff --git a/src/html/html_table_element.c b/src/html/html_table_element.c index d387e8d..cdf1714 100644 --- a/src/html/html_table_element.c +++ b/src/html/html_table_element.c @@ -65,7 +65,7 @@ dom_exception _dom_html_table_element_initialise(struct dom_html_document *doc, struct dom_html_table_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_TABLE], + doc->elements[DOM_HTML_ELEMENT_TYPE_TABLE], namespace, prefix); } @@ -183,7 +183,9 @@ dom_exception dom_html_table_element_get_caption( for (node_tmp = node_tmp->first_child; node_tmp != NULL; node_tmp = node_tmp->next) { if((node_tmp->type == DOM_ELEMENT_NODE) && - dom_string_caseless_isequal(doc->memoised[hds_CAPTION],node_tmp->name)) { + dom_string_caseless_isequal( + doc->elements[DOM_HTML_ELEMENT_TYPE_CAPTION], + node_tmp->name)) { break; } } @@ -212,8 +214,9 @@ dom_exception dom_html_table_element_set_caption( if (check_node == NULL) { return DOM_HIERARCHY_REQUEST_ERR; } - if (!dom_string_caseless_isequal(doc->memoised[hds_CAPTION], - check_node->name)) { + if (!dom_string_caseless_isequal( + doc->elements[DOM_HTML_ELEMENT_TYPE_CAPTION], + check_node->name)) { return DOM_HIERARCHY_REQUEST_ERR; } @@ -239,7 +242,9 @@ dom_exception dom_html_table_element_get_t_head( for (node_tmp = node_tmp->first_child; node_tmp != NULL; node_tmp = node_tmp->next) { if((node_tmp->type == DOM_ELEMENT_NODE) && - dom_string_caseless_isequal(doc->memoised[hds_THEAD],node_tmp->name)) { + dom_string_caseless_isequal( + doc->elements[DOM_HTML_ELEMENT_TYPE_THEAD], + node_tmp->name)) { break; } } @@ -267,7 +272,9 @@ dom_exception dom_html_table_element_set_t_head( if (check_node == NULL) { return DOM_HIERARCHY_REQUEST_ERR; } - if (!dom_string_caseless_isequal(doc->memoised[hds_CAPTION],check_node->name)) { + if (!dom_string_caseless_isequal( + doc->elements[DOM_HTML_ELEMENT_TYPE_CAPTION], + check_node->name)) { return DOM_HIERARCHY_REQUEST_ERR; } @@ -293,8 +300,9 @@ dom_exception dom_html_table_element_get_t_foot( for (node_tmp = node_tmp->first_child; node_tmp != NULL; node_tmp = node_tmp->next) { if ((node_tmp->type == DOM_ELEMENT_NODE) && - dom_string_caseless_isequal(doc->memoised[hds_TFOOT], - node_tmp->name)) { + dom_string_caseless_isequal( + doc->elements[DOM_HTML_ELEMENT_TYPE_TFOOT], + node_tmp->name)) { break; } } @@ -323,7 +331,9 @@ dom_exception dom_html_table_element_set_t_foot( return DOM_HIERARCHY_REQUEST_ERR; } - if(!dom_string_caseless_isequal(doc->memoised[hds_TFOOT],check_node->name)) { + if(!dom_string_caseless_isequal( + doc->elements[DOM_HTML_ELEMENT_TYPE_TFOOT], + check_node->name)) { return DOM_HIERARCHY_REQUEST_ERR; } @@ -345,9 +355,10 @@ dom_exception dom_html_table_element_set_t_foot( */ bool table_rows_callback(struct dom_node_internal *node, void *ctx) { + dom_html_document *doc = ctx; if(node->type == DOM_ELEMENT_NODE && dom_string_caseless_isequal(node->name, - ((dom_html_document *)ctx)->memoised[hds_TR])) { + doc->elements[DOM_HTML_ELEMENT_TYPE_TR])) { return true; } return false; @@ -378,9 +389,10 @@ dom_exception dom_html_table_element_get_rows( */ bool table_t_bodies_callback(struct dom_node_internal *node, void *ctx) { + dom_html_document *doc = ctx; if(node->type == DOM_ELEMENT_NODE && dom_string_caseless_isequal(node->name, - ((dom_html_document *)ctx)->memoised[hds_TBODY])) { + doc->elements[DOM_HTML_ELEMENT_TYPE_TBODY])) { return true; } return false; @@ -492,7 +504,7 @@ dom_exception dom_html_table_element_create_t_foot( dom_node *new_t_foot; exp = _dom_html_table_section_element_create(doc, - doc->memoised[hds_TFOOT], + doc->elements[DOM_HTML_ELEMENT_TYPE_TFOOT], ((dom_node_internal *)element)->namespace, ((dom_node_internal *)element)->prefix, (dom_html_table_section_element **)t_foot); @@ -565,7 +577,7 @@ dom_exception dom_html_table_element_create_t_head( dom_node *new_t_head; exp = _dom_html_table_section_element_create(doc, - doc->memoised[hds_THEAD], + doc->elements[DOM_HTML_ELEMENT_TYPE_THEAD], ((dom_node_internal *)element)->namespace, ((dom_node_internal *)element)->prefix, (dom_html_table_section_element **)t_head); @@ -643,7 +655,7 @@ dom_exception dom_html_table_element_create_t_body( dom_node *new_t_body; exp = _dom_html_table_section_element_create(doc, - doc->memoised[hds_TBODY], + doc->elements[DOM_HTML_ELEMENT_TYPE_TBODY], ((dom_node_internal *)element)->namespace, ((dom_node_internal *)element)->prefix, t_body); @@ -768,7 +780,9 @@ dom_exception dom_html_table_element_insert_row( for (n = n->first_child; n != NULL; n = n->next) { if((n->type == DOM_ELEMENT_NODE) && - dom_string_caseless_isequal(doc->memoised[hds_TBODY],n->name)) { + dom_string_caseless_isequal( + doc->elements[DOM_HTML_ELEMENT_TYPE_TBODY], + n->name)) { exp = dom_html_table_section_element_get_rows((dom_html_table_section_element *)n, &rows); exp = dom_html_collection_get_length(rows, §ion_len); @@ -881,7 +895,9 @@ dom_exception dom_html_table_element_delete_row( for (n = n->first_child; n != NULL; n = n->next) { if((n->type == DOM_ELEMENT_NODE) && - dom_string_caseless_isequal(doc->memoised[hds_TBODY],n->name)) { + dom_string_caseless_isequal( + doc->elements[DOM_HTML_ELEMENT_TYPE_TBODY], + n->name)) { exp = dom_html_table_section_element_get_rows ((dom_html_table_section_element *)n, &rows); if(exp != DOM_NO_ERR) { diff --git a/src/html/html_tablecaption_element.c b/src/html/html_tablecaption_element.c index d2c3fc6..ddb2d5c 100644 --- a/src/html/html_tablecaption_element.c +++ b/src/html/html_tablecaption_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_table_caption_element_initialise(struct dom_html_documen struct dom_html_table_caption_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_CAPTION], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_CAPTION], + namespace, prefix); } /** diff --git a/src/html/html_tablecell_element.c b/src/html/html_tablecell_element.c index 796bbc9..c881440 100644 --- a/src/html/html_tablecell_element.c +++ b/src/html/html_tablecell_element.c @@ -47,7 +47,8 @@ dom_exception _dom_html_table_cell_element_create(struct dom_html_document *doc, node->base.vtable = &_dom_html_element_vtable; node->vtable = &_protect_vtable; - return _dom_html_table_cell_element_initialise(doc, tag_name, namespace, prefix, *ele); + return _dom_html_table_cell_element_initialise(doc, tag_name, + namespace, prefix, *ele); } /** @@ -185,7 +186,9 @@ dom_exception dom_html_table_cell_element_get_cell_index( int32_t cnt = 0; dom_node_internal *root; while(n != NULL) { - if(dom_string_caseless_isequal(doc->memoised[hds_TR],n->name)) { + if(dom_string_caseless_isequal( + doc->elements[DOM_HTML_ELEMENT_TYPE_TR], + n->name)) { break; } n = n->parent; @@ -195,8 +198,12 @@ dom_exception dom_html_table_cell_element_get_cell_index( if(n == (dom_node_internal *)table_cell) { break; } else if((n->type == DOM_ELEMENT_NODE) && - (dom_string_caseless_isequal(doc->memoised[hds_TD],n->name) || - dom_string_caseless_isequal(doc->memoised[hds_TH],n->name))) { + (dom_string_caseless_isequal( + doc->elements[DOM_HTML_ELEMENT_TYPE_TD], + n->name) || + dom_string_caseless_isequal( + doc->elements[DOM_HTML_ELEMENT_TYPE_TH], + n->name))) { cnt += 1; } if(n->first_child != NULL) { @@ -233,8 +240,8 @@ dom_exception dom_html_table_cell_element_get_cell_index( dom_exception dom_html_table_cell_element_get_col_span( dom_html_table_cell_element *table_cell, dom_ulong *col_span) { - return dom_html_element_get_dom_ulong_property(&table_cell->base, "colspan", - SLEN("colspan"), col_span); + return dom_html_element_get_dom_ulong_property(&table_cell->base, + "colspan", SLEN("colspan"), col_span); } /** @@ -247,8 +254,8 @@ dom_exception dom_html_table_cell_element_get_col_span( dom_exception dom_html_table_cell_element_set_col_span( dom_html_table_cell_element *table_cell, dom_ulong col_span) { - return dom_html_element_set_dom_ulong_property(&table_cell->base, "colspan", - SLEN("colspan"), col_span); + return dom_html_element_set_dom_ulong_property(&table_cell->base, + "colspan", SLEN("colspan"), col_span); } /** @@ -261,8 +268,8 @@ dom_exception dom_html_table_cell_element_set_col_span( dom_exception dom_html_table_cell_element_get_row_span( dom_html_table_cell_element *table_cell, dom_ulong *row_span) { - return dom_html_element_get_dom_ulong_property(&table_cell->base, "rowspan", - SLEN("rowspan"), row_span); + return dom_html_element_get_dom_ulong_property(&table_cell->base, + "rowspan", SLEN("rowspan"), row_span); } /** @@ -275,8 +282,8 @@ dom_exception dom_html_table_cell_element_get_row_span( dom_exception dom_html_table_cell_element_set_row_span( dom_html_table_cell_element *table_cell, dom_ulong row_span) { - return dom_html_element_set_dom_ulong_property(&table_cell->base, "rowspan", - SLEN("rowspan"), row_span); + return dom_html_element_set_dom_ulong_property(&table_cell->base, + "rowspan", SLEN("rowspan"), row_span); } /** diff --git a/src/html/html_tablecol_element.c b/src/html/html_tablecol_element.c index cf21a24..d3d985b 100644 --- a/src/html/html_tablecol_element.c +++ b/src/html/html_tablecol_element.c @@ -46,7 +46,8 @@ dom_exception _dom_html_table_col_element_create(struct dom_html_document *doc, node->base.vtable = &_dom_html_element_vtable; node->vtable = &_protect_vtable; - return _dom_html_table_col_element_initialise(doc, tag_name, namespace, prefix, *ele); + return _dom_html_table_col_element_initialise(doc, tag_name, + namespace, prefix, *ele); } /** @@ -61,8 +62,7 @@ dom_exception _dom_html_table_col_element_initialise(struct dom_html_document *d struct dom_html_table_col_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - tag_name, - namespace, prefix); + tag_name, namespace, prefix); } /** diff --git a/src/html/html_tablerow_element.c b/src/html/html_tablerow_element.c index e4d3514..0a0fb1e 100644 --- a/src/html/html_tablerow_element.c +++ b/src/html/html_tablerow_element.c @@ -49,7 +49,8 @@ dom_exception _dom_html_table_row_element_create(struct dom_html_document *doc, node->base.vtable = &_dom_html_element_vtable; node->vtable = &_protect_vtable; - return _dom_html_table_row_element_initialise(doc, namespace, prefix, *ele); + return _dom_html_table_row_element_initialise(doc, + namespace, prefix, *ele); } /** @@ -64,7 +65,7 @@ dom_exception _dom_html_table_row_element_initialise(struct dom_html_document *d struct dom_html_table_row_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_TR], + doc->elements[DOM_HTML_ELEMENT_TYPE_TR], namespace, prefix); } @@ -185,21 +186,26 @@ dom_exception dom_html_table_row_element_get_row_index( uint32_t count = 0; - for(n = n->first_child; n != (dom_node_internal *)table_row; + for (n = n->first_child; n != (dom_node_internal *)table_row; n = n->next) { - if(n->type == DOM_ELEMENT_NODE && - dom_string_caseless_isequal(n->name,doc->memoised[hds_TR])) { + if(n->type == DOM_ELEMENT_NODE && + dom_string_caseless_isequal(n->name, + doc->elements[DOM_HTML_ELEMENT_TYPE_TR])) { count += 1; - } + } } - if(dom_string_caseless_isequal((parent->parent)->name, doc->memoised[hds_TABLE]) && - dom_string_caseless_isequal(parent->name, doc->memoised[hds_THEAD]) - ) { + if (dom_string_caseless_isequal((parent->parent)->name, + doc->elements[DOM_HTML_ELEMENT_TYPE_TABLE]) && + dom_string_caseless_isequal(parent->name, + doc->elements[DOM_HTML_ELEMENT_TYPE_THEAD])) { *row_index = count; - }else if(dom_string_caseless_isequal((parent->parent)->name, doc->memoised[hds_TABLE]) && - (dom_string_caseless_isequal(parent->name, doc->memoised[hds_TBODY]) || - dom_string_caseless_isequal(parent->name, doc->memoised[hds_TFOOT]))) { + } else if (dom_string_caseless_isequal((parent->parent)->name, + doc->elements[DOM_HTML_ELEMENT_TYPE_TABLE]) && + (dom_string_caseless_isequal(parent->name, + doc->elements[DOM_HTML_ELEMENT_TYPE_TBODY]) || + dom_string_caseless_isequal(parent->name, + doc->elements[DOM_HTML_ELEMENT_TYPE_TFOOT]))) { uint32_t len; dom_html_table_section_element *t_head; dom_html_collection *rows; @@ -227,7 +233,8 @@ dom_exception dom_html_table_row_element_get_row_index( for (n = n->first_child;n != parent && n != NULL; n = n->next) { - if (dom_string_caseless_isequal(n->name, doc->memoised[hds_TBODY])) { + if (dom_string_caseless_isequal(n->name, + doc->elements[DOM_HTML_ELEMENT_TYPE_TBODY])) { exp = dom_html_table_section_element_get_rows( (dom_html_table_section_element *)n, &rows); @@ -265,12 +272,13 @@ dom_exception dom_html_table_row_element_get_section_row_index( dom_node_internal *n = ((dom_node_internal *)table_row)->parent; dom_html_document *doc = (dom_html_document *) ((dom_node_internal *) table_row)->owner; int32_t count = 0; - for(n = n->first_child; n != (dom_node_internal *)table_row; + for (n = n->first_child; n != (dom_node_internal *)table_row; n = n->next) { - if(n->type == DOM_ELEMENT_NODE && - dom_string_caseless_isequal(n->name, doc->memoised[hds_TR])) { + if (n->type == DOM_ELEMENT_NODE && + dom_string_caseless_isequal(n->name, + doc->elements[DOM_HTML_ELEMENT_TYPE_TR])) { count += 1; - } + } } *section_row_index = count; return DOM_NO_ERR; @@ -285,9 +293,10 @@ dom_exception dom_html_table_row_element_get_section_row_index( */ bool table_cells_callback(struct dom_node_internal *node, void *ctx) { - if(node->type == DOM_ELEMENT_NODE && + dom_html_document *doc = ctx; + if (node->type == DOM_ELEMENT_NODE && dom_string_caseless_isequal(node->name, - ((dom_html_document *)ctx)->memoised[hds_TD])) { + doc->elements[DOM_HTML_ELEMENT_TYPE_TD])) { return true; } return false; @@ -323,33 +332,34 @@ dom_exception dom_html_table_row_element_insert_cell( dom_node *node; /*< The node at the (index)th position*/ - dom_html_collection *cells; /*< The collection of cells in input table_row_element*/ + dom_html_collection *cells; /*< The collection of cells in input table_row_element*/ uint32_t len; /*< The size of the cell collection */ dom_exception exp; /*< Variable for getting the exceptions*/ - exp = _dom_html_element_create(doc, doc->memoised[hds_TD], + exp = _dom_html_element_create(doc, + doc->elements[DOM_HTML_ELEMENT_TYPE_TD], ((dom_node_internal *)element)->namespace, ((dom_node_internal *)element)->prefix, cell); - if(exp != DOM_NO_ERR) + if (exp != DOM_NO_ERR) return exp; exp = dom_html_table_row_element_get_cells(element, &cells); - if(exp != DOM_NO_ERR) { + if (exp != DOM_NO_ERR) { dom_node_unref(*cell); return exp; } exp = dom_html_collection_get_length(cells, &len); - if(exp != DOM_NO_ERR) { + if (exp != DOM_NO_ERR) { dom_node_unref(*cell); return exp; } - if(index < -1 || index > (int32_t)len) { + if (index < -1 || index > (int32_t)len) { /* Check for index validity */ dom_html_collection_unref (cells); return DOM_INDEX_SIZE_ERR; - } else if(index == -1 || index == (int32_t)len) { + } else if (index == -1 || index == (int32_t)len) { dom_node *new_cell; dom_html_collection_unref(cells); @@ -363,8 +373,7 @@ dom_exception dom_html_table_row_element_insert_cell( dom_html_collection_unref(cells); return dom_node_insert_before(element, - *cell, node, - &new_cell); + *cell, node, &new_cell); } } diff --git a/src/html/html_tablesection_element.c b/src/html/html_tablesection_element.c index dbc0902..9718612 100644 --- a/src/html/html_tablesection_element.c +++ b/src/html/html_tablesection_element.c @@ -50,7 +50,8 @@ dom_exception _dom_html_table_section_element_create(struct dom_html_document *d node->base.vtable = &_dom_html_element_vtable; node->vtable = &_protect_vtable; - return _dom_html_table_section_element_initialise(doc, tag_name, namespace, prefix, *ele); + return _dom_html_table_section_element_initialise(doc, tag_name, + namespace, prefix, *ele); } /** @@ -168,9 +169,10 @@ SIMPLE_GET_SET(v_align); /* The callback function for _dom_html_collection_create*/ bool table_section_callback(struct dom_node_internal *node, void *ctx) { + dom_html_document *doc = ctx; if(node->type == DOM_ELEMENT_NODE && dom_string_caseless_isequal(node->name, - ((dom_html_document *)ctx)->memoised[hds_TR])) { + doc->elements[DOM_HTML_ELEMENT_TYPE_TR])) { return true; } return false; diff --git a/src/html/html_text_area_element.c b/src/html/html_text_area_element.c index ac90a76..cfc3bed 100644 --- a/src/html/html_text_area_element.c +++ b/src/html/html_text_area_element.c @@ -67,8 +67,8 @@ dom_exception _dom_html_text_area_element_initialise(struct dom_html_document *d ele->value_set = false; return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_TEXTAREA], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_TEXTAREA], + namespace, prefix); } /** diff --git a/src/html/html_title_element.c b/src/html/html_title_element.c index 80da5e1..e2107c8 100644 --- a/src/html/html_title_element.c +++ b/src/html/html_title_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_title_element_initialise(struct dom_html_document *doc, struct dom_html_title_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_TITLE], - namespace, prefix); + doc->elements[DOM_HTML_ELEMENT_TYPE_TITLE], + namespace, prefix); } /** diff --git a/src/html/html_ulist_element.c b/src/html/html_ulist_element.c index e7f8bb3..17d31a9 100644 --- a/src/html/html_ulist_element.c +++ b/src/html/html_ulist_element.c @@ -61,8 +61,8 @@ dom_exception _dom_html_u_list_element_initialise(struct dom_html_document *doc, struct dom_html_u_list_element *ele) { return _dom_html_element_initialise(doc, &ele->base, - doc->memoised[hds_UL], - namespace, u_listfix); + doc->elements[DOM_HTML_ELEMENT_TYPE_UL], + namespace, u_listfix); } /** |