libdom: branch tlsa/html-element-type created. release/0.2.0-16-g5b6c191
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/libdom.git/shortlog/5b6c1914915e4c6c1b69e4...
...commit http://git.netsurf-browser.org/libdom.git/commit/5b6c1914915e4c6c1b69e4c5...
...tree http://git.netsurf-browser.org/libdom.git/tree/5b6c1914915e4c6c1b69e4c56c...
The branch, tlsa/html-element-type has been created
at 5b6c1914915e4c6c1b69e4c56cd60705e40daff3 (commit)
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/libdom.git/commit/?id=5b6c1914915e4c6c1b69...
commit 5b6c1914915e4c6c1b69e4c56cd60705e40daff3
Author: Michael Drake <michael.drake(a)codethink.co.uk>
Commit: Michael Drake <michael.drake(a)codethink.co.uk>
Fix longstanding failure to handle HTMLDirectoryElement specialisation.
We were looking for DIRECTORY tags, but we should have been looking for
DIR elements.
diff --git a/include/dom/html/html_elements.h b/include/dom/html/html_elements.h
index d4aec10..5774657 100644
--- a/include/dom/html/html_elements.h
+++ b/include/dom/html/html_elements.h
@@ -32,7 +32,7 @@
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(DIR) \
DOM_HTML_ELEMENT_STRINGS_ENTRY(MENU) \
DOM_HTML_ELEMENT_STRINGS_ENTRY(LI) \
DOM_HTML_ELEMENT_STRINGS_ENTRY(BLOCKQUOTE) \
diff --git a/src/html/html_directory_element.c b/src/html/html_directory_element.c
index 0ad88ae..1e06074 100644
--- a/src/html/html_directory_element.c
+++ b/src/html/html_directory_element.c
@@ -61,7 +61,7 @@ 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->elements[DOM_HTML_ELEMENT_TYPE_DIRECTORY],
+ doc->elements[DOM_HTML_ELEMENT_TYPE_DIR],
namespace, prefix);
}
diff --git a/src/html/html_document.c b/src/html/html_document.c
index d50fb52..3d2a7f3 100644
--- a/src/html/html_document.c
+++ b/src/html/html_document.c
@@ -342,6 +342,9 @@ static inline dom_html_element_type _dom_html_document_get_element_type(
} else if (dom_string_isequal(tag_name_upper, html->elements[
DOM_HTML_ELEMENT_TYPE_MAP])) {
return DOM_HTML_ELEMENT_TYPE_MAP;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_DIR])) {
+ return DOM_HTML_ELEMENT_TYPE_DIR;
}
break;
case 4:
@@ -467,12 +470,6 @@ static inline dom_html_element_type _dom_html_document_get_element_type(
return DOM_HTML_ELEMENT_TYPE_FRAMESET;
}
break;
- case 9:
- if (dom_string_isequal(tag_name_upper, html->elements[
- DOM_HTML_ELEMENT_TYPE_DIRECTORY])) {
- return DOM_HTML_ELEMENT_TYPE_DIRECTORY;
- }
- break;
case 10:
if (dom_string_isequal(tag_name_upper, html->elements[
DOM_HTML_ELEMENT_TYPE_BLOCKQUOTE])) {
@@ -577,7 +574,7 @@ _dom_html_document_create_element_internal(
exc = _dom_html_dlist_element_create(html, namespace, prefix,
(dom_html_dlist_element **) result);
break;
- case DOM_HTML_ELEMENT_TYPE_DIRECTORY:
+ case DOM_HTML_ELEMENT_TYPE_DIR:
exc = _dom_html_directory_element_create(html, namespace,
prefix, (dom_html_directory_element **) result);
break;
commitdiff http://git.netsurf-browser.org/libdom.git/commit/?id=13f06360888ecb87e498...
commit 13f06360888ecb87e498012cf8c937e4041f5c4a
Author: Michael Drake <michael.drake(a)codethink.co.uk>
Commit: Michael Drake <michael.drake(a)codethink.co.uk>
Optimise HTMLElement specialisation slightly.
Gets the byte length of the tag names string, and splits
the comparison ladder into ladders for different string
lengths. This reduces the amount of dom_string_isequal()
calls we need to do.
diff --git a/src/html/html_document.c b/src/html/html_document.c
index 89ef439..d50fb52 100644
--- a/src/html/html_document.c
+++ b/src/html/html_document.c
@@ -257,195 +257,228 @@ dom_exception _dom_html_document_copy(dom_node_internal *old,
static inline dom_html_element_type _dom_html_document_get_element_type(
dom_html_document *html, dom_string *tag_name_upper)
{
- if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_HTML])) {
- return DOM_HTML_ELEMENT_TYPE_HTML;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_HEAD])) {
- return DOM_HTML_ELEMENT_TYPE_HEAD;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_META])) {
- return DOM_HTML_ELEMENT_TYPE_META;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_BASE])) {
- return DOM_HTML_ELEMENT_TYPE_BASE;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_TITLE])) {
- return DOM_HTML_ELEMENT_TYPE_TITLE;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_BODY])) {
- return DOM_HTML_ELEMENT_TYPE_BODY;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_DIV])) {
- return DOM_HTML_ELEMENT_TYPE_DIV;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_FORM])) {
- return DOM_HTML_ELEMENT_TYPE_FORM;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_LINK])) {
- return DOM_HTML_ELEMENT_TYPE_LINK;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_BUTTON])) {
- return DOM_HTML_ELEMENT_TYPE_BUTTON;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_INPUT])) {
- return DOM_HTML_ELEMENT_TYPE_INPUT;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_TEXTAREA])) {
- return DOM_HTML_ELEMENT_TYPE_TEXTAREA;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_OPTGROUP])) {
- return DOM_HTML_ELEMENT_TYPE_OPTGROUP;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_OPTION])) {
- return DOM_HTML_ELEMENT_TYPE_OPTION;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_SELECT])) {
- return DOM_HTML_ELEMENT_TYPE_SELECT;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_HR])) {
- return DOM_HTML_ELEMENT_TYPE_HR;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_DL])) {
- return DOM_HTML_ELEMENT_TYPE_DL;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_DIRECTORY])) {
- return DOM_HTML_ELEMENT_TYPE_DIRECTORY;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_MENU])) {
- return DOM_HTML_ELEMENT_TYPE_MENU;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_FIELDSET])) {
- return DOM_HTML_ELEMENT_TYPE_FIELDSET;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_LEGEND])) {
- return DOM_HTML_ELEMENT_TYPE_LEGEND;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_P])) {
- return DOM_HTML_ELEMENT_TYPE_P;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_H1])) {
- return DOM_HTML_ELEMENT_TYPE_H1;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_H2])) {
- return DOM_HTML_ELEMENT_TYPE_H2;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_H3])) {
- return DOM_HTML_ELEMENT_TYPE_H3;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_H4])) {
- return DOM_HTML_ELEMENT_TYPE_H4;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_H5])) {
- return DOM_HTML_ELEMENT_TYPE_H5;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_H6])) {
- return DOM_HTML_ELEMENT_TYPE_H6;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_BLOCKQUOTE])) {
- return DOM_HTML_ELEMENT_TYPE_BLOCKQUOTE;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_Q])) {
- return DOM_HTML_ELEMENT_TYPE_Q;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_PRE])) {
- return DOM_HTML_ELEMENT_TYPE_PRE;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_BR])) {
- return DOM_HTML_ELEMENT_TYPE_BR;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_LABEL])) {
- return DOM_HTML_ELEMENT_TYPE_LABEL;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_UL])) {
- return DOM_HTML_ELEMENT_TYPE_UL;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_OL])) {
- return DOM_HTML_ELEMENT_TYPE_OL;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_LI])) {
- return DOM_HTML_ELEMENT_TYPE_LI;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_FONT])) {
- return DOM_HTML_ELEMENT_TYPE_FONT;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_DEL])) {
- return DOM_HTML_ELEMENT_TYPE_DEL;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_INS])) {
- return DOM_HTML_ELEMENT_TYPE_INS;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_A])) {
- return DOM_HTML_ELEMENT_TYPE_A;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_BASEFONT])) {
- return DOM_HTML_ELEMENT_TYPE_BASEFONT;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_IMG])) {
- return DOM_HTML_ELEMENT_TYPE_IMG;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_OBJECT])) {
- return DOM_HTML_ELEMENT_TYPE_OBJECT;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_PARAM])) {
- return DOM_HTML_ELEMENT_TYPE_PARAM;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_APPLET])) {
- return DOM_HTML_ELEMENT_TYPE_APPLET;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_MAP])) {
- return DOM_HTML_ELEMENT_TYPE_MAP;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_AREA])) {
- return DOM_HTML_ELEMENT_TYPE_AREA;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_SCRIPT])) {
- return DOM_HTML_ELEMENT_TYPE_SCRIPT;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_CAPTION])) {
- return DOM_HTML_ELEMENT_TYPE_CAPTION;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_TD])) {
- return DOM_HTML_ELEMENT_TYPE_TD;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_TH])) {
- return DOM_HTML_ELEMENT_TYPE_TH;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_COL])) {
- return DOM_HTML_ELEMENT_TYPE_COL;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_COLGROUP])) {
- return DOM_HTML_ELEMENT_TYPE_COLGROUP;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_THEAD])) {
- return DOM_HTML_ELEMENT_TYPE_THEAD;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_TBODY])) {
- return DOM_HTML_ELEMENT_TYPE_TBODY;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_TFOOT])) {
- return DOM_HTML_ELEMENT_TYPE_TFOOT;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_TABLE])) {
- return DOM_HTML_ELEMENT_TYPE_TABLE;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_TR])) {
- return DOM_HTML_ELEMENT_TYPE_TR;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_STYLE])) {
- return DOM_HTML_ELEMENT_TYPE_STYLE;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_FRAMESET])) {
- return DOM_HTML_ELEMENT_TYPE_FRAMESET;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_FRAME])) {
- return DOM_HTML_ELEMENT_TYPE_FRAME;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_IFRAME])) {
- return DOM_HTML_ELEMENT_TYPE_IFRAME;
- } else if (dom_string_isequal(tag_name_upper,
- html->elements[DOM_HTML_ELEMENT_TYPE_ISINDEX])) {
- return DOM_HTML_ELEMENT_TYPE_ISINDEX;
+ size_t len = dom_string_byte_length(tag_name_upper);
+
+ switch (len) {
+ case 1:
+ if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_P])) {
+ return DOM_HTML_ELEMENT_TYPE_P;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_A])) {
+ return DOM_HTML_ELEMENT_TYPE_A;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_Q])) {
+ return DOM_HTML_ELEMENT_TYPE_Q;
+ }
+ break;
+ case 2:
+ if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_H1])) {
+ return DOM_HTML_ELEMENT_TYPE_H1;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_H2])) {
+ return DOM_HTML_ELEMENT_TYPE_H2;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_H3])) {
+ return DOM_HTML_ELEMENT_TYPE_H3;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_H4])) {
+ return DOM_HTML_ELEMENT_TYPE_H4;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_H5])) {
+ return DOM_HTML_ELEMENT_TYPE_H5;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_H6])) {
+ return DOM_HTML_ELEMENT_TYPE_H6;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_HR])) {
+ return DOM_HTML_ELEMENT_TYPE_HR;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_DL])) {
+ return DOM_HTML_ELEMENT_TYPE_DL;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_UL])) {
+ return DOM_HTML_ELEMENT_TYPE_UL;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_OL])) {
+ return DOM_HTML_ELEMENT_TYPE_OL;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_LI])) {
+ return DOM_HTML_ELEMENT_TYPE_LI;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_TD])) {
+ return DOM_HTML_ELEMENT_TYPE_TD;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_TH])) {
+ return DOM_HTML_ELEMENT_TYPE_TH;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_TR])) {
+ return DOM_HTML_ELEMENT_TYPE_TR;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_BR])) {
+ return DOM_HTML_ELEMENT_TYPE_BR;
+ }
+ break;
+ case 3:
+ if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_DIV])) {
+ return DOM_HTML_ELEMENT_TYPE_DIV;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_PRE])) {
+ return DOM_HTML_ELEMENT_TYPE_PRE;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_DEL])) {
+ return DOM_HTML_ELEMENT_TYPE_DEL;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_INS])) {
+ return DOM_HTML_ELEMENT_TYPE_INS;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_IMG])) {
+ return DOM_HTML_ELEMENT_TYPE_IMG;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_COL])) {
+ return DOM_HTML_ELEMENT_TYPE_COL;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_MAP])) {
+ return DOM_HTML_ELEMENT_TYPE_MAP;
+ }
+ break;
+ case 4:
+ if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_HTML])) {
+ return DOM_HTML_ELEMENT_TYPE_HTML;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_HEAD])) {
+ return DOM_HTML_ELEMENT_TYPE_HEAD;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_META])) {
+ return DOM_HTML_ELEMENT_TYPE_META;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_BASE])) {
+ return DOM_HTML_ELEMENT_TYPE_BASE;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_BODY])) {
+ return DOM_HTML_ELEMENT_TYPE_BODY;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_FORM])) {
+ return DOM_HTML_ELEMENT_TYPE_FORM;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_LINK])) {
+ return DOM_HTML_ELEMENT_TYPE_LINK;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_MENU])) {
+ return DOM_HTML_ELEMENT_TYPE_MENU;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_FONT])) {
+ return DOM_HTML_ELEMENT_TYPE_FONT;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_AREA])) {
+ return DOM_HTML_ELEMENT_TYPE_AREA;
+ }
+ break;
+ case 5:
+ if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_TITLE])) {
+ return DOM_HTML_ELEMENT_TYPE_TITLE;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_INPUT])) {
+ return DOM_HTML_ELEMENT_TYPE_INPUT;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_FRAME])) {
+ return DOM_HTML_ELEMENT_TYPE_FRAME;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_THEAD])) {
+ return DOM_HTML_ELEMENT_TYPE_THEAD;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_TBODY])) {
+ return DOM_HTML_ELEMENT_TYPE_TBODY;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_TFOOT])) {
+ return DOM_HTML_ELEMENT_TYPE_TFOOT;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_TABLE])) {
+ return DOM_HTML_ELEMENT_TYPE_TABLE;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_STYLE])) {
+ return DOM_HTML_ELEMENT_TYPE_STYLE;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_LABEL])) {
+ return DOM_HTML_ELEMENT_TYPE_LABEL;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_PARAM])) {
+ return DOM_HTML_ELEMENT_TYPE_PARAM;
+ }
+ break;
+ case 6:
+ if (dom_string_isequal(tag_name_upper,html->elements[
+ DOM_HTML_ELEMENT_TYPE_BUTTON])) {
+ return DOM_HTML_ELEMENT_TYPE_BUTTON;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_OPTION])) {
+ return DOM_HTML_ELEMENT_TYPE_OPTION;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_SCRIPT])) {
+ return DOM_HTML_ELEMENT_TYPE_SCRIPT;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_IFRAME])) {
+ return DOM_HTML_ELEMENT_TYPE_IFRAME;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_LEGEND])) {
+ return DOM_HTML_ELEMENT_TYPE_LEGEND;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_SELECT])) {
+ return DOM_HTML_ELEMENT_TYPE_SELECT;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_OBJECT])) {
+ return DOM_HTML_ELEMENT_TYPE_OBJECT;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_APPLET])) {
+ return DOM_HTML_ELEMENT_TYPE_APPLET;
+ }
+ break;
+ case 7:
+ if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_CAPTION])) {
+ return DOM_HTML_ELEMENT_TYPE_CAPTION;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_ISINDEX])) {
+ return DOM_HTML_ELEMENT_TYPE_ISINDEX;
+ }
+ break;
+ case 8:
+ if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_TEXTAREA])) {
+ return DOM_HTML_ELEMENT_TYPE_TEXTAREA;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_OPTGROUP])) {
+ return DOM_HTML_ELEMENT_TYPE_OPTGROUP;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_BASEFONT])) {
+ return DOM_HTML_ELEMENT_TYPE_BASEFONT;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_FIELDSET])) {
+ return DOM_HTML_ELEMENT_TYPE_FIELDSET;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_COLGROUP])) {
+ return DOM_HTML_ELEMENT_TYPE_COLGROUP;
+ } else if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_FRAMESET])) {
+ return DOM_HTML_ELEMENT_TYPE_FRAMESET;
+ }
+ break;
+ case 9:
+ if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_DIRECTORY])) {
+ return DOM_HTML_ELEMENT_TYPE_DIRECTORY;
+ }
+ break;
+ case 10:
+ if (dom_string_isequal(tag_name_upper, html->elements[
+ DOM_HTML_ELEMENT_TYPE_BLOCKQUOTE])) {
+ return DOM_HTML_ELEMENT_TYPE_BLOCKQUOTE;
+ }
+ break;
}
return DOM_HTML_ELEMENT_TYPE__UNKNOWN;
commitdiff http://git.netsurf-browser.org/libdom.git/commit/?id=12385d1747d1f84a75ac...
commit 12385d1747d1f84a75ac397fb1dcf8da5c3955c3
Author: Michael Drake <michael.drake(a)codethink.co.uk>
Commit: Michael Drake <michael.drake(a)codethink.co.uk>
Optimise element specialisation: use non-caseless comparison in ladder.
We know for sure both things are upper case, so using the caseless
version is needlessly slow, since it will need to lowercase both
(if lowercase version's don't already exist) and compare the lower
case versions.
diff --git a/src/html/html_document.c b/src/html/html_document.c
index d4d7c37..89ef439 100644
--- a/src/html/html_document.c
+++ b/src/html/html_document.c
@@ -257,193 +257,193 @@ dom_exception _dom_html_document_copy(dom_node_internal *old,
static inline dom_html_element_type _dom_html_document_get_element_type(
dom_html_document *html, dom_string *tag_name_upper)
{
- if (dom_string_caseless_isequal(tag_name_upper,
+ if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_HTML])) {
return DOM_HTML_ELEMENT_TYPE_HTML;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_HEAD])) {
return DOM_HTML_ELEMENT_TYPE_HEAD;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_META])) {
return DOM_HTML_ELEMENT_TYPE_META;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_BASE])) {
return DOM_HTML_ELEMENT_TYPE_BASE;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_TITLE])) {
return DOM_HTML_ELEMENT_TYPE_TITLE;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_BODY])) {
return DOM_HTML_ELEMENT_TYPE_BODY;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_DIV])) {
return DOM_HTML_ELEMENT_TYPE_DIV;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_FORM])) {
return DOM_HTML_ELEMENT_TYPE_FORM;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_LINK])) {
return DOM_HTML_ELEMENT_TYPE_LINK;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_BUTTON])) {
return DOM_HTML_ELEMENT_TYPE_BUTTON;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_INPUT])) {
return DOM_HTML_ELEMENT_TYPE_INPUT;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_TEXTAREA])) {
return DOM_HTML_ELEMENT_TYPE_TEXTAREA;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_OPTGROUP])) {
return DOM_HTML_ELEMENT_TYPE_OPTGROUP;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_OPTION])) {
return DOM_HTML_ELEMENT_TYPE_OPTION;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_SELECT])) {
return DOM_HTML_ELEMENT_TYPE_SELECT;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_HR])) {
return DOM_HTML_ELEMENT_TYPE_HR;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_DL])) {
return DOM_HTML_ELEMENT_TYPE_DL;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_DIRECTORY])) {
return DOM_HTML_ELEMENT_TYPE_DIRECTORY;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_MENU])) {
return DOM_HTML_ELEMENT_TYPE_MENU;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_FIELDSET])) {
return DOM_HTML_ELEMENT_TYPE_FIELDSET;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_LEGEND])) {
return DOM_HTML_ELEMENT_TYPE_LEGEND;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_P])) {
return DOM_HTML_ELEMENT_TYPE_P;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_H1])) {
return DOM_HTML_ELEMENT_TYPE_H1;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_H2])) {
return DOM_HTML_ELEMENT_TYPE_H2;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_H3])) {
return DOM_HTML_ELEMENT_TYPE_H3;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_H4])) {
return DOM_HTML_ELEMENT_TYPE_H4;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_H5])) {
return DOM_HTML_ELEMENT_TYPE_H5;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_H6])) {
return DOM_HTML_ELEMENT_TYPE_H6;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_BLOCKQUOTE])) {
return DOM_HTML_ELEMENT_TYPE_BLOCKQUOTE;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_Q])) {
return DOM_HTML_ELEMENT_TYPE_Q;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_PRE])) {
return DOM_HTML_ELEMENT_TYPE_PRE;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_BR])) {
return DOM_HTML_ELEMENT_TYPE_BR;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_LABEL])) {
return DOM_HTML_ELEMENT_TYPE_LABEL;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_UL])) {
return DOM_HTML_ELEMENT_TYPE_UL;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_OL])) {
return DOM_HTML_ELEMENT_TYPE_OL;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_LI])) {
return DOM_HTML_ELEMENT_TYPE_LI;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_FONT])) {
return DOM_HTML_ELEMENT_TYPE_FONT;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_DEL])) {
return DOM_HTML_ELEMENT_TYPE_DEL;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_INS])) {
return DOM_HTML_ELEMENT_TYPE_INS;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_A])) {
return DOM_HTML_ELEMENT_TYPE_A;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_BASEFONT])) {
return DOM_HTML_ELEMENT_TYPE_BASEFONT;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_IMG])) {
return DOM_HTML_ELEMENT_TYPE_IMG;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_OBJECT])) {
return DOM_HTML_ELEMENT_TYPE_OBJECT;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_PARAM])) {
return DOM_HTML_ELEMENT_TYPE_PARAM;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_APPLET])) {
return DOM_HTML_ELEMENT_TYPE_APPLET;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_MAP])) {
return DOM_HTML_ELEMENT_TYPE_MAP;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_AREA])) {
return DOM_HTML_ELEMENT_TYPE_AREA;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_SCRIPT])) {
return DOM_HTML_ELEMENT_TYPE_SCRIPT;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_CAPTION])) {
return DOM_HTML_ELEMENT_TYPE_CAPTION;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_TD])) {
return DOM_HTML_ELEMENT_TYPE_TD;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_TH])) {
return DOM_HTML_ELEMENT_TYPE_TH;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_COL])) {
return DOM_HTML_ELEMENT_TYPE_COL;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_COLGROUP])) {
return DOM_HTML_ELEMENT_TYPE_COLGROUP;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_THEAD])) {
return DOM_HTML_ELEMENT_TYPE_THEAD;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_TBODY])) {
return DOM_HTML_ELEMENT_TYPE_TBODY;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_TFOOT])) {
return DOM_HTML_ELEMENT_TYPE_TFOOT;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_TABLE])) {
return DOM_HTML_ELEMENT_TYPE_TABLE;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_TR])) {
return DOM_HTML_ELEMENT_TYPE_TR;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_STYLE])) {
return DOM_HTML_ELEMENT_TYPE_STYLE;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_FRAMESET])) {
return DOM_HTML_ELEMENT_TYPE_FRAMESET;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_FRAME])) {
return DOM_HTML_ELEMENT_TYPE_FRAME;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_IFRAME])) {
return DOM_HTML_ELEMENT_TYPE_IFRAME;
- } else if (dom_string_caseless_isequal(tag_name_upper,
+ } else if (dom_string_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_ISINDEX])) {
return DOM_HTML_ELEMENT_TYPE_ISINDEX;
}
commitdiff http://git.netsurf-browser.org/libdom.git/commit/?id=0174d8bc39cb8bb6d942...
commit 0174d8bc39cb8bb6d9422f2a65c7dacb94a9c0da
Author: Michael Drake <michael.drake(a)codethink.co.uk>
Commit: Michael Drake <michael.drake(a)codethink.co.uk>
Remove default from HTML element specialisation switch.
Now that everything is handled we can remove the default, and
it should be obvious in future if something is added to the
list of elements but not properly handled.
diff --git a/src/html/html_document.c b/src/html/html_document.c
index ba8ee1b..d4d7c37 100644
--- a/src/html/html_document.c
+++ b/src/html/html_document.c
@@ -701,7 +701,6 @@ _dom_html_document_create_element_internal(
exc = _dom_html_isindex_element_create(html, namespace, prefix,
(dom_html_isindex_element **) result);
break;
- default:
case DOM_HTML_ELEMENT_TYPE__UNKNOWN:
exc = _dom_html_element_create(html, tag_name, namespace,
prefix, result);
commitdiff http://git.netsurf-browser.org/libdom.git/commit/?id=13df5afe36ff3921cfa9...
commit 13df5afe36ff3921cfa928bb33fbecee5734c1ed
Author: Michael Drake <michael.drake(a)codethink.co.uk>
Commit: Michael Drake <michael.drake(a)codethink.co.uk>
Add missing detection of HTMLBaseElement specialisation.
diff --git a/src/html/html_document.c b/src/html/html_document.c
index 2e44a81..ba8ee1b 100644
--- a/src/html/html_document.c
+++ b/src/html/html_document.c
@@ -16,6 +16,7 @@
#include "html/html_html_element.h"
#include "html/html_head_element.h"
#include "html/html_body_element.h"
+#include "html/html_base_element.h"
#include "html/html_div_element.h"
#include "html/html_link_element.h"
#include "html/html_title_element.h"
@@ -266,6 +267,9 @@ static inline dom_html_element_type _dom_html_document_get_element_type(
html->elements[DOM_HTML_ELEMENT_TYPE_META])) {
return DOM_HTML_ELEMENT_TYPE_META;
} else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_BASE])) {
+ return DOM_HTML_ELEMENT_TYPE_BASE;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_TITLE])) {
return DOM_HTML_ELEMENT_TYPE_TITLE;
} else if (dom_string_caseless_isequal(tag_name_upper,
@@ -484,6 +488,10 @@ _dom_html_document_create_element_internal(
exc = _dom_html_meta_element_create(html, namespace, prefix,
(dom_html_meta_element **) result);
break;
+ case DOM_HTML_ELEMENT_TYPE_BASE:
+ exc = _dom_html_base_element_create(html, namespace, prefix,
+ (dom_html_base_element **) result);
+ break;
case DOM_HTML_ELEMENT_TYPE_TITLE:
exc = _dom_html_title_element_create(html, namespace, prefix,
(dom_html_title_element **) result);
commitdiff http://git.netsurf-browser.org/libdom.git/commit/?id=e346fef45738fc17d5cd...
commit e346fef45738fc17d5cd1f9bca571b8df5e2fc0d
Author: Michael Drake <michael.drake(a)codethink.co.uk>
Commit: Michael Drake <michael.drake(a)codethink.co.uk>
Fix up HTMLBaseElement specialisation.
diff --git a/src/html/html_base_element.c b/src/html/html_base_element.c
index 6be8e3a..55bbd94 100644
--- a/src/html/html_base_element.c
+++ b/src/html/html_base_element.c
@@ -28,6 +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_base_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
struct dom_html_base_element **ele)
{
struct dom_node_internal *node;
@@ -41,7 +42,7 @@ dom_exception _dom_html_base_element_create(struct dom_html_document *doc,
node->base.vtable = &_dom_html_element_vtable;
node->vtable = &_protect_vtable;
- return _dom_html_base_element_initialise(doc, *ele);
+ return _dom_html_base_element_initialise(doc, namespace, prefix, *ele);
}
/**
@@ -52,19 +53,12 @@ dom_exception _dom_html_base_element_create(struct dom_html_document *doc,
* \return DOM_NO_ERR on success, appropriate dom_exception on failure.
*/
dom_exception _dom_html_base_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
struct dom_html_base_element *ele)
{
- dom_string *name = NULL;
- dom_exception err;
-
- err = dom_string_create((const uint8_t *) "BASE", SLEN("BASE"), &name);
- if (err != DOM_NO_ERR)
- return err;
-
- err = _dom_html_element_initialise(doc, &ele->base, name, NULL, NULL);
- dom_string_unref(name);
-
- return err;
+ return _dom_html_element_initialise(doc, &ele->base,
+ doc->elements[DOM_HTML_ELEMENT_TYPE_BASE],
+ namespace, prefix);
}
/**
diff --git a/src/html/html_base_element.h b/src/html/html_base_element.h
index 7a04b29..3113635 100644
--- a/src/html/html_base_element.h
+++ b/src/html/html_base_element.h
@@ -19,10 +19,12 @@ struct dom_html_base_element {
/* Create a dom_html_base_element object */
dom_exception _dom_html_base_element_create(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
struct dom_html_base_element **ele);
/* Initialise a dom_html_base_element object */
dom_exception _dom_html_base_element_initialise(struct dom_html_document *doc,
+ dom_string *namespace, dom_string *prefix,
struct dom_html_base_element *ele);
/* Finalise a dom_html_base_element object */
commitdiff http://git.netsurf-browser.org/libdom.git/commit/?id=81c012f5709d09eee22f...
commit 81c012f5709d09eee22f337ac2ee33ea80fbe299
Author: Michael Drake <michael.drake(a)codethink.co.uk>
Commit: Michael Drake <michael.drake(a)codethink.co.uk>
Add missing detection of HTMLMetaElement specialisation.
diff --git a/src/html/html_document.c b/src/html/html_document.c
index 5965e47..2e44a81 100644
--- a/src/html/html_document.c
+++ b/src/html/html_document.c
@@ -263,6 +263,9 @@ static inline dom_html_element_type _dom_html_document_get_element_type(
html->elements[DOM_HTML_ELEMENT_TYPE_HEAD])) {
return DOM_HTML_ELEMENT_TYPE_HEAD;
} else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_META])) {
+ return DOM_HTML_ELEMENT_TYPE_META;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_TITLE])) {
return DOM_HTML_ELEMENT_TYPE_TITLE;
} else if (dom_string_caseless_isequal(tag_name_upper,
@@ -477,6 +480,10 @@ _dom_html_document_create_element_internal(
exc = _dom_html_head_element_create(html, namespace, prefix,
(dom_html_head_element **) result);
break;
+ case DOM_HTML_ELEMENT_TYPE_META:
+ exc = _dom_html_meta_element_create(html, namespace, prefix,
+ (dom_html_meta_element **) result);
+ break;
case DOM_HTML_ELEMENT_TYPE_TITLE:
exc = _dom_html_title_element_create(html, namespace, prefix,
(dom_html_title_element **) result);
commitdiff http://git.netsurf-browser.org/libdom.git/commit/?id=8d09ec06b447d6383718...
commit 8d09ec06b447d6383718edc5f0f50b354628469d
Author: Michael Drake <michael.drake(a)codethink.co.uk>
Commit: Michael Drake <michael.drake(a)codethink.co.uk>
Add missing detection of HTMLDivElement specialisation.
diff --git a/src/html/html_document.c b/src/html/html_document.c
index 2dc63d9..5965e47 100644
--- a/src/html/html_document.c
+++ b/src/html/html_document.c
@@ -16,6 +16,7 @@
#include "html/html_html_element.h"
#include "html/html_head_element.h"
#include "html/html_body_element.h"
+#include "html/html_div_element.h"
#include "html/html_link_element.h"
#include "html/html_title_element.h"
#include "html/html_meta_element.h"
@@ -268,6 +269,9 @@ static inline dom_html_element_type _dom_html_document_get_element_type(
html->elements[DOM_HTML_ELEMENT_TYPE_BODY])) {
return DOM_HTML_ELEMENT_TYPE_BODY;
} else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_DIV])) {
+ return DOM_HTML_ELEMENT_TYPE_DIV;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_FORM])) {
return DOM_HTML_ELEMENT_TYPE_FORM;
} else if (dom_string_caseless_isequal(tag_name_upper,
@@ -481,6 +485,10 @@ _dom_html_document_create_element_internal(
exc = _dom_html_body_element_create(html, namespace, prefix,
(dom_html_body_element **) result);
break;
+ case DOM_HTML_ELEMENT_TYPE_DIV:
+ exc = _dom_html_div_element_create(html, namespace, prefix,
+ (dom_html_div_element **) result);
+ break;
case DOM_HTML_ELEMENT_TYPE_FORM:
exc = _dom_html_form_element_create(html, namespace, prefix,
(dom_html_form_element **) result);
commitdiff http://git.netsurf-browser.org/libdom.git/commit/?id=dd2e075fe7be7620acac...
commit dd2e075fe7be7620acac88e73dd73c336171bedd
Author: Michael Drake <michael.drake(a)codethink.co.uk>
Commit: Michael Drake <michael.drake(a)codethink.co.uk>
Add missing specialisation of BLOCKQUOTE.
Both Q and BLOCKQUOTE share the HTMLQuoteElement specialisation.
diff --git a/src/html/html_document.c b/src/html/html_document.c
index 9c56799..2dc63d9 100644
--- a/src/html/html_document.c
+++ b/src/html/html_document.c
@@ -331,6 +331,9 @@ static inline dom_html_element_type _dom_html_document_get_element_type(
html->elements[DOM_HTML_ELEMENT_TYPE_H6])) {
return DOM_HTML_ELEMENT_TYPE_H6;
} else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_BLOCKQUOTE])) {
+ return DOM_HTML_ELEMENT_TYPE_BLOCKQUOTE;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
html->elements[DOM_HTML_ELEMENT_TYPE_Q])) {
return DOM_HTML_ELEMENT_TYPE_Q;
} else if (dom_string_caseless_isequal(tag_name_upper,
@@ -548,6 +551,7 @@ _dom_html_document_create_element_internal(
namespace, prefix,
(dom_html_heading_element **) result);
break;
+ case DOM_HTML_ELEMENT_TYPE_BLOCKQUOTE:
case DOM_HTML_ELEMENT_TYPE_Q:
exc = _dom_html_quote_element_create(html, namespace, prefix,
(dom_html_quote_element **) result);
commitdiff http://git.netsurf-browser.org/libdom.git/commit/?id=1f07c352dec8aeb1454d...
commit 1f07c352dec8aeb1454da11f0a39ae0b24d5251b
Author: Michael Drake <michael.drake(a)codethink.co.uk>
Commit: Michael Drake <michael.drake(a)codethink.co.uk>
Enable table row HTML element specialisation.
The code for it was always there, but it was never reached.
diff --git a/src/html/html_document.c b/src/html/html_document.c
index 46a2609..9c56799 100644
--- a/src/html/html_document.c
+++ b/src/html/html_document.c
@@ -650,6 +650,10 @@ _dom_html_document_create_element_internal(
exc = _dom_html_table_element_create(html, namespace, prefix,
(dom_html_table_element **) result);
break;
+ case DOM_HTML_ELEMENT_TYPE_TR:
+ exc = _dom_html_table_row_element_create(html, namespace,
+ prefix, (dom_html_table_row_element **) result);
+ break;
case DOM_HTML_ELEMENT_TYPE_STYLE:
exc = _dom_html_style_element_create(html,
(dom_html_style_element **) result);
commitdiff http://git.netsurf-browser.org/libdom.git/commit/?id=3894e33506789b6edc4e...
commit 3894e33506789b6edc4ef36239fc45d03e5db4e9
Author: Michael Drake <michael.drake(a)codethink.co.uk>
Commit: Michael Drake <michael.drake(a)codethink.co.uk>
Split detection of HTML TAG type out into helper.
This moves the massive dom_string comparison ladder out
into a separate function, and switches on the result.
Using a switch here has highlighted multiple issues:
- Various html element specialisations were missed out.
- Both TD elements were in the ladder twice.
diff --git a/src/html/html_document.c b/src/html/html_document.c
index c33753e..46a2609 100644
--- a/src/html/html_document.c
+++ b/src/html/html_document.c
@@ -246,248 +246,435 @@ dom_exception _dom_html_document_copy(dom_node_internal *old,
return DOM_NOT_SUPPORTED_ERR;
}
+/**
+ * Get html element type from an uppercased tag name string
+ *
+ * \param html The html document that the html element belongs to
+ * \param tag_name_upper Upper cased string containing tag name
+ */
+static inline dom_html_element_type _dom_html_document_get_element_type(
+ dom_html_document *html, dom_string *tag_name_upper)
+{
+ if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_HTML])) {
+ return DOM_HTML_ELEMENT_TYPE_HTML;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_HEAD])) {
+ return DOM_HTML_ELEMENT_TYPE_HEAD;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_TITLE])) {
+ return DOM_HTML_ELEMENT_TYPE_TITLE;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_BODY])) {
+ return DOM_HTML_ELEMENT_TYPE_BODY;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_FORM])) {
+ return DOM_HTML_ELEMENT_TYPE_FORM;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_LINK])) {
+ return DOM_HTML_ELEMENT_TYPE_LINK;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_BUTTON])) {
+ return DOM_HTML_ELEMENT_TYPE_BUTTON;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_INPUT])) {
+ return DOM_HTML_ELEMENT_TYPE_INPUT;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_TEXTAREA])) {
+ return DOM_HTML_ELEMENT_TYPE_TEXTAREA;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_OPTGROUP])) {
+ return DOM_HTML_ELEMENT_TYPE_OPTGROUP;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_OPTION])) {
+ return DOM_HTML_ELEMENT_TYPE_OPTION;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_SELECT])) {
+ return DOM_HTML_ELEMENT_TYPE_SELECT;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_HR])) {
+ return DOM_HTML_ELEMENT_TYPE_HR;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_DL])) {
+ return DOM_HTML_ELEMENT_TYPE_DL;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_DIRECTORY])) {
+ return DOM_HTML_ELEMENT_TYPE_DIRECTORY;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_MENU])) {
+ return DOM_HTML_ELEMENT_TYPE_MENU;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_FIELDSET])) {
+ return DOM_HTML_ELEMENT_TYPE_FIELDSET;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_LEGEND])) {
+ return DOM_HTML_ELEMENT_TYPE_LEGEND;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_P])) {
+ return DOM_HTML_ELEMENT_TYPE_P;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_H1])) {
+ return DOM_HTML_ELEMENT_TYPE_H1;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_H2])) {
+ return DOM_HTML_ELEMENT_TYPE_H2;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_H3])) {
+ return DOM_HTML_ELEMENT_TYPE_H3;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_H4])) {
+ return DOM_HTML_ELEMENT_TYPE_H4;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_H5])) {
+ return DOM_HTML_ELEMENT_TYPE_H5;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_H6])) {
+ return DOM_HTML_ELEMENT_TYPE_H6;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_Q])) {
+ return DOM_HTML_ELEMENT_TYPE_Q;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_PRE])) {
+ return DOM_HTML_ELEMENT_TYPE_PRE;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_BR])) {
+ return DOM_HTML_ELEMENT_TYPE_BR;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_LABEL])) {
+ return DOM_HTML_ELEMENT_TYPE_LABEL;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_UL])) {
+ return DOM_HTML_ELEMENT_TYPE_UL;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_OL])) {
+ return DOM_HTML_ELEMENT_TYPE_OL;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_LI])) {
+ return DOM_HTML_ELEMENT_TYPE_LI;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_FONT])) {
+ return DOM_HTML_ELEMENT_TYPE_FONT;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_DEL])) {
+ return DOM_HTML_ELEMENT_TYPE_DEL;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_INS])) {
+ return DOM_HTML_ELEMENT_TYPE_INS;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_A])) {
+ return DOM_HTML_ELEMENT_TYPE_A;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_BASEFONT])) {
+ return DOM_HTML_ELEMENT_TYPE_BASEFONT;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_IMG])) {
+ return DOM_HTML_ELEMENT_TYPE_IMG;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_OBJECT])) {
+ return DOM_HTML_ELEMENT_TYPE_OBJECT;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_PARAM])) {
+ return DOM_HTML_ELEMENT_TYPE_PARAM;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_APPLET])) {
+ return DOM_HTML_ELEMENT_TYPE_APPLET;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_MAP])) {
+ return DOM_HTML_ELEMENT_TYPE_MAP;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_AREA])) {
+ return DOM_HTML_ELEMENT_TYPE_AREA;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_SCRIPT])) {
+ return DOM_HTML_ELEMENT_TYPE_SCRIPT;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_CAPTION])) {
+ return DOM_HTML_ELEMENT_TYPE_CAPTION;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_TD])) {
+ return DOM_HTML_ELEMENT_TYPE_TD;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_TH])) {
+ return DOM_HTML_ELEMENT_TYPE_TH;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_COL])) {
+ return DOM_HTML_ELEMENT_TYPE_COL;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_COLGROUP])) {
+ return DOM_HTML_ELEMENT_TYPE_COLGROUP;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_THEAD])) {
+ return DOM_HTML_ELEMENT_TYPE_THEAD;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_TBODY])) {
+ return DOM_HTML_ELEMENT_TYPE_TBODY;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_TFOOT])) {
+ return DOM_HTML_ELEMENT_TYPE_TFOOT;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_TABLE])) {
+ return DOM_HTML_ELEMENT_TYPE_TABLE;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_TR])) {
+ return DOM_HTML_ELEMENT_TYPE_TR;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_STYLE])) {
+ return DOM_HTML_ELEMENT_TYPE_STYLE;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_FRAMESET])) {
+ return DOM_HTML_ELEMENT_TYPE_FRAMESET;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_FRAME])) {
+ return DOM_HTML_ELEMENT_TYPE_FRAME;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_IFRAME])) {
+ return DOM_HTML_ELEMENT_TYPE_IFRAME;
+ } else if (dom_string_caseless_isequal(tag_name_upper,
+ html->elements[DOM_HTML_ELEMENT_TYPE_ISINDEX])) {
+ return DOM_HTML_ELEMENT_TYPE_ISINDEX;
+ }
+
+ return DOM_HTML_ELEMENT_TYPE__UNKNOWN;
+}
+
/* Overloaded methods inherited from super class */
/** Internal method to support both kinds of create method */
static dom_exception
-_dom_html_document_create_element_internal(dom_html_document *html,
- dom_string *in_tag_name,
- dom_string *namespace,
- dom_string *prefix,
- dom_html_element **result)
+_dom_html_document_create_element_internal(
+ dom_html_document *html,
+ dom_string *in_tag_name,
+ dom_string *namespace,
+ dom_string *prefix,
+ dom_html_element **result)
{
dom_exception exc;
dom_string *tag_name;
+ dom_html_element_type type;
exc = dom_string_toupper(in_tag_name, true, &tag_name);
if (exc != DOM_NO_ERR)
return exc;
- if (dom_string_caseless_isequal(tag_name,
- html->elements[DOM_HTML_ELEMENT_TYPE_HTML])) {
+ type = _dom_html_document_get_element_type(html, tag_name);
+
+ switch(type) {
+ case DOM_HTML_ELEMENT_TYPE__COUNT:
+ assert(type != DOM_HTML_ELEMENT_TYPE__COUNT);
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_HEAD])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_TITLE])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_BODY])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_FORM])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_LINK])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_BUTTON])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_INPUT])) {
+ break;
+ case 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->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->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->elements[DOM_HTML_ELEMENT_TYPE_OPTION])) {
+ break;
+ case DOM_HTML_ELEMENT_TYPE_TEXTAREA:
+ exc = _dom_html_text_area_element_create(html, namespace,
+ prefix, (dom_html_text_area_element **) result);
+ break;
+ case DOM_HTML_ELEMENT_TYPE_OPTGROUP:
+ exc = _dom_html_opt_group_element_create(html, namespace,
+ prefix, (dom_html_opt_group_element **) result);
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_SELECT])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_HR])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_DL])) {
+ break;
+ case 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->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->elements[DOM_HTML_ELEMENT_TYPE_MENU])) {
+ break;
+ case DOM_HTML_ELEMENT_TYPE_DIRECTORY:
+ exc = _dom_html_directory_element_create(html, namespace,
+ prefix, (dom_html_directory_element **) result);
+ break;
+ case 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->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->elements[DOM_HTML_ELEMENT_TYPE_LEGEND])) {
+ break;
+ case DOM_HTML_ELEMENT_TYPE_FIELDSET:
+ exc = _dom_html_field_set_element_create(html, namespace,
+ prefix, (dom_html_field_set_element **) result);
+ break;
+ case 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->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->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])) {
+ break;
+ case DOM_HTML_ELEMENT_TYPE_P:
+ exc = _dom_html_paragraph_element_create(html, namespace,
+ prefix, (dom_html_paragraph_element **) result);
+ break;
+ case DOM_HTML_ELEMENT_TYPE_H1:
+ case DOM_HTML_ELEMENT_TYPE_H2:
+ case DOM_HTML_ELEMENT_TYPE_H3:
+ case DOM_HTML_ELEMENT_TYPE_H4:
+ case DOM_HTML_ELEMENT_TYPE_H5:
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_Q])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_PRE])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_BR])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_LABEL])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_UL])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_OL])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_LI])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_FONT])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_DEL]) ||
- dom_string_caseless_isequal(tag_name,
- html->elements[DOM_HTML_ELEMENT_TYPE_INS])) {
+ break;
+ case DOM_HTML_ELEMENT_TYPE_DEL:
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_A])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_BASEFONT])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_IMG])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_OBJECT])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_PARAM])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_APPLET])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_MAP])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_AREA])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_SCRIPT])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_CAPTION])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_TD]) ||
- dom_string_caseless_isequal(tag_name,
- html->elements[DOM_HTML_ELEMENT_TYPE_TH])) {
+ break;
+ case DOM_HTML_ELEMENT_TYPE_TD:
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_COL])||
- dom_string_caseless_isequal(tag_name,
- html->elements[DOM_HTML_ELEMENT_TYPE_COLGROUP])) {
+ break;
+ case DOM_HTML_ELEMENT_TYPE_COL:
+ case 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->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])) {
+ break;
+ case DOM_HTML_ELEMENT_TYPE_THEAD:
+ case DOM_HTML_ELEMENT_TYPE_TBODY:
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_TABLE])) {
+ break;
+ case 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->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->elements[DOM_HTML_ELEMENT_TYPE_STYLE])) {
+ break;
+ case 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->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->elements[DOM_HTML_ELEMENT_TYPE_FRAME])) {
+ break;
+ case DOM_HTML_ELEMENT_TYPE_FRAMESET:
+ exc = _dom_html_frame_set_element_create(html, namespace,
+ prefix, (dom_html_frame_set_element **) result);
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_IFRAME])) {
+ break;
+ case 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->elements[DOM_HTML_ELEMENT_TYPE_ISINDEX])) {
+ break;
+ case DOM_HTML_ELEMENT_TYPE_ISINDEX:
exc = _dom_html_isindex_element_create(html, namespace, prefix,
(dom_html_isindex_element **) result);
- } else {
+ break;
+ default:
+ case DOM_HTML_ELEMENT_TYPE__UNKNOWN:
exc = _dom_html_element_create(html, tag_name, namespace,
prefix, result);
+ break;
}
dom_string_unref(tag_name);
commitdiff http://git.netsurf-browser.org/libdom.git/commit/?id=6d600214268e64e6bc83...
commit 6d600214268e64e6bc83df61d8abfdf8963acdad
Author: Michael Drake <michael.drake(a)codethink.co.uk>
Commit: Michael Drake <michael.drake(a)codethink.co.uk>
Split out tag names from general string table and enum.
Previously these were mixed in the the document's general memoised strings.
This also gives us an enum by which HTML elements can be identified.
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(a)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);
}
/**
-----------------------------------------------------------------------
--
Document Object Model library
7 years, 4 months
netsurf: branch master updated. release/3.3-658-g5afd42a
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/5afd42aa5a9ce1561fa1a...
...commit http://git.netsurf-browser.org/netsurf.git/commit/5afd42aa5a9ce1561fa1a6d...
...tree http://git.netsurf-browser.org/netsurf.git/tree/5afd42aa5a9ce1561fa1a6d73...
The branch, master has been updated
via 5afd42aa5a9ce1561fa1a6d73980b23cb612cda7 (commit)
via 414e94452b48cae83452cde611040f94ed4cee07 (commit)
via ca376741c6dbc860d293eb834c1d4bed0384f99a (commit)
via 2c380f818f3101333639d7a52651ca2f29be08d6 (commit)
via 780752d276578751a58435ba3d3b6600a90a16b0 (commit)
via 49bd536c6e461b120251d42a99f2e13a6de0fa4e (commit)
from f3332a20d76dbfbac1d8db8b8a9edeff97ff537d (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=5afd42aa5a9ce1561fa...
commit 5afd42aa5a9ce1561fa1a6d73980b23cb612cda7
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Add the remaining missing OS3 prefs GUI elements
Might need to add/remove some things for the OS3 build
diff --git a/amiga/gui_options.c b/amiga/gui_options.c
index 5add7d1..54652b3 100755
--- a/amiga/gui_options.c
+++ b/amiga/gui_options.c
@@ -220,9 +220,11 @@ struct ami_gui_opts_window {
Object *objects[GID_OPTS_LAST];
#ifndef __amigaos4__
struct List clicktablist;
+ struct List screenoptslist;
struct List proxyoptslist;
struct List nativebmoptslist;
struct List ditheroptslist;
+ struct List fontoptslist;
#endif
};
@@ -254,6 +256,10 @@ static void ami_gui_opts_array_to_list(struct List *list, const char *array[], i
node = AllocChooserNode(CNA_Text, array[i], TAG_DONE);
break;
case NSA_LIST_RADIO:
+ /* Note: RBNA_Labels is RBNA_Label in OS4
+ * Also note: These labels don't work (FIXME) */
+ node = AllocRadioButtonNode(RBNA_Labels, array[i], TAG_DONE);
+ break;
default:
break;
}
@@ -282,6 +288,8 @@ static void ami_gui_opts_free_list(struct List *list, int type)
FreeChooserNode(node);
break;
case NSA_LIST_RADIO:
+ FreeRadioButtonNode(node);
+ break;
default:
break;
}
@@ -328,13 +336,6 @@ static void ami_gui_opts_setup(struct ami_gui_opts_window *gow)
ditheropts[2] = (char *)ami_utf8_easy((char *)messages_get("High"));
ditheropts[3] = NULL;
-#ifndef __amigaos4__
- ami_gui_opts_array_to_list(&gow->clicktablist, tabs, NSA_LIST_CLICKTAB);
- ami_gui_opts_array_to_list(&gow->proxyoptslist, proxyopts, NSA_LIST_CHOOSER);
- ami_gui_opts_array_to_list(&gow->nativebmoptslist, nativebmopts, NSA_LIST_CHOOSER);
- ami_gui_opts_array_to_list(&gow->ditheroptslist, ditheropts, NSA_LIST_CHOOSER);
-#endif
-
websearch_list = ami_gui_opts_websearch();
gadlab[GID_OPTS_HOMEPAGE] = (char *)ami_utf8_easy((char *)messages_get("HomePageURL"));
@@ -449,6 +450,15 @@ static void ami_gui_opts_setup(struct ami_gui_opts_window *gow)
fontopts[3] = gadlab[GID_OPTS_FONT_CURSIVE];
fontopts[4] = gadlab[GID_OPTS_FONT_FANTASY];
fontopts[5] = NULL;
+
+#ifndef __amigaos4__
+ ami_gui_opts_array_to_list(&gow->clicktablist, tabs, NSA_LIST_CLICKTAB);
+ ami_gui_opts_array_to_list(&gow->screenoptslist, screenopts, NSA_LIST_RADIO);
+ ami_gui_opts_array_to_list(&gow->proxyoptslist, proxyopts, NSA_LIST_CHOOSER);
+ ami_gui_opts_array_to_list(&gow->nativebmoptslist, nativebmopts, NSA_LIST_CHOOSER);
+ ami_gui_opts_array_to_list(&gow->ditheroptslist, ditheropts, NSA_LIST_CHOOSER);
+ ami_gui_opts_array_to_list(&gow->fontoptslist, fontopts, NSA_LIST_CHOOSER);
+#endif
}
static void ami_gui_opts_free(struct ami_gui_opts_window *gow)
@@ -474,9 +484,11 @@ static void ami_gui_opts_free(struct ami_gui_opts_window *gow)
#ifndef __amigaos4__
ami_gui_opts_free_list(&gow->clicktablist, NSA_LIST_CLICKTAB);
+ ami_gui_opts_free_list(&gow->screenoptslist, NSA_LIST_RADIO);
ami_gui_opts_free_list(&gow->proxyoptslist, NSA_LIST_CHOOSER);
ami_gui_opts_free_list(&gow->nativebmoptslist, NSA_LIST_CHOOSER);
ami_gui_opts_free_list(&gow->ditheroptslist, NSA_LIST_CHOOSER);
+ ami_gui_opts_free_list(&gow->fontoptslist, NSA_LIST_CHOOSER);
#endif
}
@@ -777,12 +789,15 @@ void ami_gui_opts_open(void)
LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, BVS_GROUP,
LAYOUT_Label, gadlab[GRP_OPTS_SCREEN],
-#ifdef __amigaos4__
LAYOUT_AddChild, LayoutHObj,
LAYOUT_AddChild, gow->objects[GID_OPTS_SCREEN] = RadioButtonObj,
GA_ID, GID_OPTS_SCREEN,
GA_RelVerify, TRUE,
+#ifdef __amigaos4__
GA_Text, screenopts,
+#else
+ RADIOBUTTON_Labels, &gow->screenoptslist,
+#endif
RADIOBUTTON_Selected, screenoptsselected,
RadioButtonEnd,
CHILD_WeightedWidth,0,
@@ -805,9 +820,6 @@ void ami_gui_opts_open(void)
LayoutEnd,
CHILD_WeightedHeight,0,
LayoutEnd,
-#else
-#warning FIXME FOR OS3
-#endif
LayoutEnd, // screen
CHILD_WeightedHeight,0,
LAYOUT_AddChild, LayoutVObj,
@@ -1019,7 +1031,7 @@ void ami_gui_opts_open(void)
#ifdef __amigaos4__
CHOOSER_LabelArray, ditheropts,
#else
- CHOOSER_LabelArray, &gow->ditheroptslist,
+ CHOOSER_Labels, &gow->ditheroptslist,
#endif
CHOOSER_Selected, nsoption_int(dither_quality),
ChooserEnd,
@@ -1152,20 +1164,20 @@ void ami_gui_opts_open(void)
CHILD_Label, LabelObj,
LABEL_Text, gadlab[GID_OPTS_FONT_FANTASY],
LabelEnd,
-#ifdef __amigaos4__
LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_DEFAULT] = ChooserObj,
GA_ID, GID_OPTS_FONT_DEFAULT,
GA_RelVerify, TRUE,
CHOOSER_PopUp, TRUE,
+#ifdef __amigaos4__
CHOOSER_LabelArray, fontopts,
+#else
+ CHOOSER_Labels, &gow->fontoptslist,
+#endif
CHOOSER_Selected, nsoption_int(font_default) - PLOT_FONT_FAMILY_SANS_SERIF,
ChooserEnd,
CHILD_Label, LabelObj,
LABEL_Text, gadlab[GID_OPTS_FONT_DEFAULT],
LabelEnd,
-#else
-#warning FIXME for OS3
-#endif
LayoutEnd, // font faces
CHILD_WeightedHeight, 0,
LAYOUT_AddChild, LayoutHObj,
@@ -1700,7 +1712,7 @@ static void ami_gui_opts_use(bool save)
} else {
nsoption_set_bool(faster_scroll, false);
}
-#ifdef __amigaos4__
+
GetAttr(RADIOBUTTON_Selected,gow->objects[GID_OPTS_SCREEN],(ULONG *)&data);
switch(data)
{
@@ -1725,9 +1737,6 @@ static void ami_gui_opts_use(bool save)
sprintf(modeid,"0x%lx", id);
nsoption_set_charp(screen_modeid, modeid);
}
-#else
-#warning FIXME FOR OS3
-#endif
GetAttr(GA_Selected,gow->objects[GID_OPTS_WIN_SIMPLE],(ULONG *)&data);
if ((data == TRUE) && (nsoption_bool(window_simple_refresh) == false)) {
@@ -1839,12 +1848,8 @@ static void ami_gui_opts_use(bool save)
if((dot = strrchr(tattr->ta_Name,'.'))) *dot = '\0';
nsoption_set_charp(font_fantasy, (char *)strdup((char *)tattr->ta_Name));
-#ifdef __amigaos4__
GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_FONT_DEFAULT],(ULONG *)&nsoption_int(font_default));
nsoption_set_int(font_default, nsoption_int(font_default) + PLOT_FONT_FAMILY_SANS_SERIF);
-#else
-#warning FIXME FOR OS3
-#endif
GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FONT_SIZE],(ULONG *)&nsoption_int(font_size));
nsoption_set_int(font_size, nsoption_int(font_size) * 10);
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=414e94452b48cae8345...
commit 414e94452b48cae83452cde611040f94ed4cee07
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Add dither and nativebitmap options to OS3 prefs gui
diff --git a/amiga/gui_options.c b/amiga/gui_options.c
index e5d64a4..5add7d1 100755
--- a/amiga/gui_options.c
+++ b/amiga/gui_options.c
@@ -221,6 +221,8 @@ struct ami_gui_opts_window {
#ifndef __amigaos4__
struct List clicktablist;
struct List proxyoptslist;
+ struct List nativebmoptslist;
+ struct List ditheroptslist;
#endif
};
@@ -305,10 +307,6 @@ static void ami_gui_opts_setup(struct ami_gui_opts_window *gow)
tabs[8] = NULL;
#endif
-#ifndef __amigaos4__
- ami_gui_opts_array_to_list(&gow->clicktablist, tabs, NSA_LIST_CLICKTAB);
-#endif
-
screenopts[0] = (char *)ami_utf8_easy((char *)messages_get("ScreenOwn"));
screenopts[1] = (char *)ami_utf8_easy((char *)messages_get("ScreenWB"));
screenopts[2] = (char *)ami_utf8_easy((char *)messages_get("ScreenPublic"));
@@ -320,10 +318,6 @@ static void ami_gui_opts_setup(struct ami_gui_opts_window *gow)
proxyopts[3] = (char *)ami_utf8_easy((char *)messages_get("ProxyNTLM"));
proxyopts[4] = NULL;
-#ifndef __amigaos4__
- ami_gui_opts_array_to_list(&gow->proxyoptslist, proxyopts, NSA_LIST_CHOOSER);
-#endif
-
nativebmopts[0] = (char *)ami_utf8_easy((char *)messages_get("None"));
nativebmopts[1] = (char *)ami_utf8_easy((char *)messages_get("Scaled"));
nativebmopts[2] = (char *)ami_utf8_easy((char *)messages_get("All"));
@@ -333,7 +327,14 @@ static void ami_gui_opts_setup(struct ami_gui_opts_window *gow)
ditheropts[1] = (char *)ami_utf8_easy((char *)messages_get("Medium"));
ditheropts[2] = (char *)ami_utf8_easy((char *)messages_get("High"));
ditheropts[3] = NULL;
-
+
+#ifndef __amigaos4__
+ ami_gui_opts_array_to_list(&gow->clicktablist, tabs, NSA_LIST_CLICKTAB);
+ ami_gui_opts_array_to_list(&gow->proxyoptslist, proxyopts, NSA_LIST_CHOOSER);
+ ami_gui_opts_array_to_list(&gow->nativebmoptslist, nativebmopts, NSA_LIST_CHOOSER);
+ ami_gui_opts_array_to_list(&gow->ditheroptslist, ditheropts, NSA_LIST_CHOOSER);
+#endif
+
websearch_list = ami_gui_opts_websearch();
gadlab[GID_OPTS_HOMEPAGE] = (char *)ami_utf8_easy((char *)messages_get("HomePageURL"));
@@ -474,6 +475,8 @@ static void ami_gui_opts_free(struct ami_gui_opts_window *gow)
#ifndef __amigaos4__
ami_gui_opts_free_list(&gow->clicktablist, NSA_LIST_CLICKTAB);
ami_gui_opts_free_list(&gow->proxyoptslist, NSA_LIST_CHOOSER);
+ ami_gui_opts_free_list(&gow->nativebmoptslist, NSA_LIST_CHOOSER);
+ ami_gui_opts_free_list(&gow->ditheroptslist, NSA_LIST_CHOOSER);
#endif
}
@@ -994,12 +997,15 @@ void ami_gui_opts_open(void)
LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, BVS_GROUP,
LAYOUT_Label, gadlab[GRP_OPTS_IMAGES],
-#ifdef __amigaos4__
LAYOUT_AddChild, gow->objects[GID_OPTS_NATIVEBM] = ChooserObj,
GA_ID, GID_OPTS_NATIVEBM,
GA_RelVerify, TRUE,
CHOOSER_PopUp, TRUE,
+#ifdef __amigaos4__
CHOOSER_LabelArray, nativebmopts,
+#else
+ CHOOSER_Labels, &gow->nativebmoptslist,
+#endif
CHOOSER_Selected, nsoption_int(cache_bitmaps),
ChooserEnd,
CHILD_Label, LabelObj,
@@ -1010,15 +1016,16 @@ void ami_gui_opts_open(void)
GA_RelVerify, TRUE,
GA_Disabled, ditherdisable,
CHOOSER_PopUp, TRUE,
+#ifdef __amigaos4__
CHOOSER_LabelArray, ditheropts,
+#else
+ CHOOSER_LabelArray, &gow->ditheroptslist,
+#endif
CHOOSER_Selected, nsoption_int(dither_quality),
ChooserEnd,
CHILD_Label, LabelObj,
LABEL_Text, gadlab[GID_OPTS_DITHERQ],
LabelEnd,
-#else
-#warning FIXME FOR OS3
-#endif
LAYOUT_AddChild, gow->objects[GID_OPTS_SCALEQ] = CheckBoxObj,
GA_ID, GID_OPTS_SCALEQ,
GA_Disabled, scaledisabled,
@@ -1777,11 +1784,7 @@ static void ami_gui_opts_use(bool save)
GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHHOST],(ULONG *)&nsoption_int(max_fetchers_per_host));
GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHCACHE],(ULONG *)&nsoption_int(max_cached_fetch_handles));
-#ifdef __amigaos4__
GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_NATIVEBM],(ULONG *)&nsoption_int(cache_bitmaps));
-#else
-#warning FIXME FOR OS3
-#endif
GetAttr(GA_Selected,gow->objects[GID_OPTS_SCALEQ],(ULONG *)&data);
if (data) {
@@ -1790,11 +1793,7 @@ static void ami_gui_opts_use(bool save)
nsoption_set_bool(scale_quality, false);
}
-#ifdef __amigaos4__
GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_DITHERQ],(ULONG *)&nsoption_int(dither_quality));
-#else
-#warning FIXME FOR OS3
-#endif
GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_ANIMSPEED],(ULONG *)&data);
animspeed = strtof((char *)data, NULL);
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=ca376741c6dbc860d29...
commit ca376741c6dbc860d293eb834c1d4bed0384f99a
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Enable proxy options in prefs GUI for OS3
diff --git a/amiga/gui_options.c b/amiga/gui_options.c
index e007b99..e5d64a4 100755
--- a/amiga/gui_options.c
+++ b/amiga/gui_options.c
@@ -220,6 +220,7 @@ struct ami_gui_opts_window {
Object *objects[GID_OPTS_LAST];
#ifndef __amigaos4__
struct List clicktablist;
+ struct List proxyoptslist;
#endif
};
@@ -319,6 +320,10 @@ static void ami_gui_opts_setup(struct ami_gui_opts_window *gow)
proxyopts[3] = (char *)ami_utf8_easy((char *)messages_get("ProxyNTLM"));
proxyopts[4] = NULL;
+#ifndef __amigaos4__
+ ami_gui_opts_array_to_list(&gow->proxyoptslist, proxyopts, NSA_LIST_CHOOSER);
+#endif
+
nativebmopts[0] = (char *)ami_utf8_easy((char *)messages_get("None"));
nativebmopts[1] = (char *)ami_utf8_easy((char *)messages_get("Scaled"));
nativebmopts[2] = (char *)ami_utf8_easy((char *)messages_get("All"));
@@ -468,6 +473,7 @@ static void ami_gui_opts_free(struct ami_gui_opts_window *gow)
#ifndef __amigaos4__
ami_gui_opts_free_list(&gow->clicktablist, NSA_LIST_CLICKTAB);
+ ami_gui_opts_free_list(&gow->proxyoptslist, NSA_LIST_CHOOSER);
#endif
}
@@ -858,7 +864,6 @@ void ami_gui_opts_open(void)
*/
PAGE_Add, LayoutVObj,
LAYOUT_AddChild, LayoutVObj,
-#ifdef __amigaos4__
LAYOUT_AddChild, LayoutVObj,
LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, BVS_GROUP,
@@ -867,7 +872,11 @@ void ami_gui_opts_open(void)
GA_ID, GID_OPTS_PROXY,
GA_RelVerify, TRUE,
CHOOSER_PopUp, TRUE,
+#ifdef __amigaos4__
CHOOSER_LabelArray, proxyopts,
+#else
+ CHOOSER_Labels, &gow->proxyoptslist,
+#endif
CHOOSER_Selected, proxytype,
ChooserEnd,
CHILD_Label, LabelObj,
@@ -930,9 +939,6 @@ void ami_gui_opts_open(void)
LABEL_Text, gadlab[GID_OPTS_PROXY_BYPASS],
LabelEnd,
LayoutEnd, // proxy
-#else
-#warning FIXME FOR OS3
-#endif
CHILD_WeightedHeight, 0,
LAYOUT_AddChild, LayoutVObj,
LAYOUT_SpaceOuter, TRUE,
@@ -1742,7 +1748,6 @@ static void ami_gui_opts_use(bool save)
nsoption_set_bool(os_mouse_pointers, false);
}
-#ifdef __amigaos4__
GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_PROXY],(ULONG *)&data);
if(data)
{
@@ -1767,9 +1772,6 @@ static void ami_gui_opts_use(bool save)
GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_PROXY_BYPASS],(ULONG *)&data);
nsoption_set_charp(http_proxy_noproxy, (char *)strdup((char *)data));
-#else
-#warning FIXME FOR OS3
-#endif
GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHMAX],(ULONG *)&nsoption_int(max_fetchers));
GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHHOST],(ULONG *)&nsoption_int(max_fetchers_per_host));
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=2c380f818f310133363...
commit 2c380f818f3101333639d7a52651ca2f29be08d6
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Fix some memory leakage
diff --git a/amiga/gui_options.c b/amiga/gui_options.c
index 85d9094..e007b99 100755
--- a/amiga/gui_options.c
+++ b/amiga/gui_options.c
@@ -210,6 +210,7 @@ enum
enum {
NSA_LIST_CLICKTAB = 0,
+ NSA_LIST_CHOOSER,
NSA_LIST_RADIO,
};
@@ -242,10 +243,20 @@ static void ami_gui_opts_array_to_list(struct List *list, const char *array[], i
NewList(list);
do {
- node = AllocClickTabNode(TNA_Text, array[i], TNA_Number, i, TAG_DONE);
+ switch(type) {
+ case NSA_LIST_CLICKTAB:
+ node = AllocClickTabNode(TNA_Text, array[i], TNA_Number, i, TAG_DONE);
+ break;
+ case NSA_LIST_CHOOSER:
+ node = AllocChooserNode(CNA_Text, array[i], TAG_DONE);
+ break;
+ case NSA_LIST_RADIO:
+ default:
+ break;
+ }
AddTail(list, node);
i++;
- } while (tabs[i] != 0);
+ } while (array[i] != 0);
}
static void ami_gui_opts_free_list(struct List *list, int type)
@@ -258,7 +269,20 @@ static void ami_gui_opts_free_list(struct List *list, int type)
do {
nnode = GetSucc(node);
- if(node) FreeClickTabNode(node);
+ Remove(node);
+ if(node) {
+ switch(type) {
+ case NSA_LIST_CLICKTAB:
+ FreeClickTabNode(node);
+ break;
+ case NSA_LIST_CHOOSER:
+ FreeChooserNode(node);
+ break;
+ case NSA_LIST_RADIO:
+ default:
+ break;
+ }
+ }
} while((node = nnode));
}
#endif
@@ -2243,6 +2267,7 @@ void ami_gui_opts_websearch_free(struct List *websearchlist)
do {
nnode = GetSucc(node);
Remove(node);
+ FreeChooserNode(node);
} while((node = nnode));
FreeVec(websearchlist);
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=780752d276578751a58...
commit 780752d276578751a58435ba3d3b6600a90a16b0
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
fix the incorrect copy'n'pasted parameters
diff --git a/amiga/gui_options.c b/amiga/gui_options.c
index 6af96f6..85d9094 100755
--- a/amiga/gui_options.c
+++ b/amiga/gui_options.c
@@ -234,16 +234,16 @@ CONST_STRPTR gadlab[OPTS_LAST];
struct List *websearch_list;
#ifndef __amigaos4__
-static void ami_gui_opts_array_to_list(struct List *list, const char array[], int type)
+static void ami_gui_opts_array_to_list(struct List *list, const char *array[], int type)
{
int i = 0;
struct Node *node;
- NewList(&gow->clicktablist);
+ NewList(list);
do {
- node = AllocClickTabNode(TNA_Text, tabs[i], TNA_Number, i, TAG_DONE);
- AddTail(&gow->clicktablist, node);
+ node = AllocClickTabNode(TNA_Text, array[i], TNA_Number, i, TAG_DONE);
+ AddTail(list, node);
i++;
} while (tabs[i] != 0);
}
@@ -253,8 +253,8 @@ static void ami_gui_opts_free_list(struct List *list, int type)
struct Node *node;
struct Node *nnode;
- if(IsListEmpty((struct List *)&gow->clicktablist)) return;
- node = GetHead((struct List *)&gow->clicktablist);
+ if(IsListEmpty((struct List *)list)) return;
+ node = GetHead((struct List *)list);
do {
nnode = GetSucc(node);
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=49bd536c6e461b12025...
commit 49bd536c6e461b120251d42a99f2e13a6de0fa4e
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Move OS3 array to list into separate function
diff --git a/amiga/gui_options.c b/amiga/gui_options.c
index 7e940ac..6af96f6 100755
--- a/amiga/gui_options.c
+++ b/amiga/gui_options.c
@@ -208,6 +208,11 @@ enum
#define OPTS_MAX_NATIVEBM 4
#define OPTS_MAX_DITHER 4
+enum {
+ NSA_LIST_CLICKTAB = 0,
+ NSA_LIST_RADIO,
+};
+
struct ami_gui_opts_window {
struct nsObject *node;
struct Window *win;
@@ -228,6 +233,36 @@ CONST_STRPTR fontopts[6];
CONST_STRPTR gadlab[OPTS_LAST];
struct List *websearch_list;
+#ifndef __amigaos4__
+static void ami_gui_opts_array_to_list(struct List *list, const char array[], int type)
+{
+ int i = 0;
+ struct Node *node;
+
+ NewList(&gow->clicktablist);
+
+ do {
+ node = AllocClickTabNode(TNA_Text, tabs[i], TNA_Number, i, TAG_DONE);
+ AddTail(&gow->clicktablist, node);
+ i++;
+ } while (tabs[i] != 0);
+}
+
+static void ami_gui_opts_free_list(struct List *list, int type)
+{
+ struct Node *node;
+ struct Node *nnode;
+
+ if(IsListEmpty((struct List *)&gow->clicktablist)) return;
+ node = GetHead((struct List *)&gow->clicktablist);
+
+ do {
+ nnode = GetSucc(node);
+ if(node) FreeClickTabNode(node);
+ } while((node = nnode));
+}
+#endif
+
static void ami_gui_opts_setup(struct ami_gui_opts_window *gow)
{
tabs[0] = (char *)ami_utf8_easy((char *)messages_get("con_general"));
@@ -246,16 +281,7 @@ static void ami_gui_opts_setup(struct ami_gui_opts_window *gow)
#endif
#ifndef __amigaos4__
- int i = 0;
- struct Node *node;
-
- NewList(&gow->clicktablist);
-
- do {
- node = AllocClickTabNode(TNA_Text, tabs[i], TNA_Number, i, TAG_DONE);
- AddTail(&gow->clicktablist, node);
- i++;
- } while (tabs[i] != 0);
+ ami_gui_opts_array_to_list(&gow->clicktablist, tabs, NSA_LIST_CLICKTAB);
#endif
screenopts[0] = (char *)ami_utf8_easy((char *)messages_get("ScreenOwn"));
@@ -417,16 +443,7 @@ static void ami_gui_opts_free(struct ami_gui_opts_window *gow)
ami_gui_opts_websearch_free(websearch_list);
#ifndef __amigaos4__
- struct Node *node;
- struct Node *nnode;
-
- if(IsListEmpty((struct List *)&gow->clicktablist)) return;
- node = GetHead((struct List *)&gow->clicktablist);
-
- do {
- nnode = GetSucc(node);
- if(node) FreeClickTabNode(node);
- } while((node = nnode));
+ ami_gui_opts_free_list(&gow->clicktablist, NSA_LIST_CLICKTAB);
#endif
}
-----------------------------------------------------------------------
Summary of changes:
amiga/gui_options.c | 168 +++++++++++++++++++++++++++++++++------------------
1 file changed, 108 insertions(+), 60 deletions(-)
diff --git a/amiga/gui_options.c b/amiga/gui_options.c
index 7e940ac..54652b3 100755
--- a/amiga/gui_options.c
+++ b/amiga/gui_options.c
@@ -208,12 +208,23 @@ enum
#define OPTS_MAX_NATIVEBM 4
#define OPTS_MAX_DITHER 4
+enum {
+ NSA_LIST_CLICKTAB = 0,
+ NSA_LIST_CHOOSER,
+ NSA_LIST_RADIO,
+};
+
struct ami_gui_opts_window {
struct nsObject *node;
struct Window *win;
Object *objects[GID_OPTS_LAST];
#ifndef __amigaos4__
struct List clicktablist;
+ struct List screenoptslist;
+ struct List proxyoptslist;
+ struct List nativebmoptslist;
+ struct List ditheroptslist;
+ struct List fontoptslist;
#endif
};
@@ -228,6 +239,65 @@ CONST_STRPTR fontopts[6];
CONST_STRPTR gadlab[OPTS_LAST];
struct List *websearch_list;
+#ifndef __amigaos4__
+static void ami_gui_opts_array_to_list(struct List *list, const char *array[], int type)
+{
+ int i = 0;
+ struct Node *node;
+
+ NewList(list);
+
+ do {
+ switch(type) {
+ case NSA_LIST_CLICKTAB:
+ node = AllocClickTabNode(TNA_Text, array[i], TNA_Number, i, TAG_DONE);
+ break;
+ case NSA_LIST_CHOOSER:
+ node = AllocChooserNode(CNA_Text, array[i], TAG_DONE);
+ break;
+ case NSA_LIST_RADIO:
+ /* Note: RBNA_Labels is RBNA_Label in OS4
+ * Also note: These labels don't work (FIXME) */
+ node = AllocRadioButtonNode(RBNA_Labels, array[i], TAG_DONE);
+ break;
+ default:
+ break;
+ }
+ AddTail(list, node);
+ i++;
+ } while (array[i] != 0);
+}
+
+static void ami_gui_opts_free_list(struct List *list, int type)
+{
+ struct Node *node;
+ struct Node *nnode;
+
+ if(IsListEmpty((struct List *)list)) return;
+ node = GetHead((struct List *)list);
+
+ do {
+ nnode = GetSucc(node);
+ Remove(node);
+ if(node) {
+ switch(type) {
+ case NSA_LIST_CLICKTAB:
+ FreeClickTabNode(node);
+ break;
+ case NSA_LIST_CHOOSER:
+ FreeChooserNode(node);
+ break;
+ case NSA_LIST_RADIO:
+ FreeRadioButtonNode(node);
+ break;
+ default:
+ break;
+ }
+ }
+ } while((node = nnode));
+}
+#endif
+
static void ami_gui_opts_setup(struct ami_gui_opts_window *gow)
{
tabs[0] = (char *)ami_utf8_easy((char *)messages_get("con_general"));
@@ -245,19 +315,6 @@ static void ami_gui_opts_setup(struct ami_gui_opts_window *gow)
tabs[8] = NULL;
#endif
-#ifndef __amigaos4__
- int i = 0;
- struct Node *node;
-
- NewList(&gow->clicktablist);
-
- do {
- node = AllocClickTabNode(TNA_Text, tabs[i], TNA_Number, i, TAG_DONE);
- AddTail(&gow->clicktablist, node);
- i++;
- } while (tabs[i] != 0);
-#endif
-
screenopts[0] = (char *)ami_utf8_easy((char *)messages_get("ScreenOwn"));
screenopts[1] = (char *)ami_utf8_easy((char *)messages_get("ScreenWB"));
screenopts[2] = (char *)ami_utf8_easy((char *)messages_get("ScreenPublic"));
@@ -278,7 +335,7 @@ static void ami_gui_opts_setup(struct ami_gui_opts_window *gow)
ditheropts[1] = (char *)ami_utf8_easy((char *)messages_get("Medium"));
ditheropts[2] = (char *)ami_utf8_easy((char *)messages_get("High"));
ditheropts[3] = NULL;
-
+
websearch_list = ami_gui_opts_websearch();
gadlab[GID_OPTS_HOMEPAGE] = (char *)ami_utf8_easy((char *)messages_get("HomePageURL"));
@@ -393,6 +450,15 @@ static void ami_gui_opts_setup(struct ami_gui_opts_window *gow)
fontopts[3] = gadlab[GID_OPTS_FONT_CURSIVE];
fontopts[4] = gadlab[GID_OPTS_FONT_FANTASY];
fontopts[5] = NULL;
+
+#ifndef __amigaos4__
+ ami_gui_opts_array_to_list(&gow->clicktablist, tabs, NSA_LIST_CLICKTAB);
+ ami_gui_opts_array_to_list(&gow->screenoptslist, screenopts, NSA_LIST_RADIO);
+ ami_gui_opts_array_to_list(&gow->proxyoptslist, proxyopts, NSA_LIST_CHOOSER);
+ ami_gui_opts_array_to_list(&gow->nativebmoptslist, nativebmopts, NSA_LIST_CHOOSER);
+ ami_gui_opts_array_to_list(&gow->ditheroptslist, ditheropts, NSA_LIST_CHOOSER);
+ ami_gui_opts_array_to_list(&gow->fontoptslist, fontopts, NSA_LIST_CHOOSER);
+#endif
}
static void ami_gui_opts_free(struct ami_gui_opts_window *gow)
@@ -417,16 +483,12 @@ static void ami_gui_opts_free(struct ami_gui_opts_window *gow)
ami_gui_opts_websearch_free(websearch_list);
#ifndef __amigaos4__
- struct Node *node;
- struct Node *nnode;
-
- if(IsListEmpty((struct List *)&gow->clicktablist)) return;
- node = GetHead((struct List *)&gow->clicktablist);
-
- do {
- nnode = GetSucc(node);
- if(node) FreeClickTabNode(node);
- } while((node = nnode));
+ ami_gui_opts_free_list(&gow->clicktablist, NSA_LIST_CLICKTAB);
+ ami_gui_opts_free_list(&gow->screenoptslist, NSA_LIST_RADIO);
+ ami_gui_opts_free_list(&gow->proxyoptslist, NSA_LIST_CHOOSER);
+ ami_gui_opts_free_list(&gow->nativebmoptslist, NSA_LIST_CHOOSER);
+ ami_gui_opts_free_list(&gow->ditheroptslist, NSA_LIST_CHOOSER);
+ ami_gui_opts_free_list(&gow->fontoptslist, NSA_LIST_CHOOSER);
#endif
}
@@ -727,12 +789,15 @@ void ami_gui_opts_open(void)
LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, BVS_GROUP,
LAYOUT_Label, gadlab[GRP_OPTS_SCREEN],
-#ifdef __amigaos4__
LAYOUT_AddChild, LayoutHObj,
LAYOUT_AddChild, gow->objects[GID_OPTS_SCREEN] = RadioButtonObj,
GA_ID, GID_OPTS_SCREEN,
GA_RelVerify, TRUE,
+#ifdef __amigaos4__
GA_Text, screenopts,
+#else
+ RADIOBUTTON_Labels, &gow->screenoptslist,
+#endif
RADIOBUTTON_Selected, screenoptsselected,
RadioButtonEnd,
CHILD_WeightedWidth,0,
@@ -755,9 +820,6 @@ void ami_gui_opts_open(void)
LayoutEnd,
CHILD_WeightedHeight,0,
LayoutEnd,
-#else
-#warning FIXME FOR OS3
-#endif
LayoutEnd, // screen
CHILD_WeightedHeight,0,
LAYOUT_AddChild, LayoutVObj,
@@ -817,7 +879,6 @@ void ami_gui_opts_open(void)
*/
PAGE_Add, LayoutVObj,
LAYOUT_AddChild, LayoutVObj,
-#ifdef __amigaos4__
LAYOUT_AddChild, LayoutVObj,
LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, BVS_GROUP,
@@ -826,7 +887,11 @@ void ami_gui_opts_open(void)
GA_ID, GID_OPTS_PROXY,
GA_RelVerify, TRUE,
CHOOSER_PopUp, TRUE,
+#ifdef __amigaos4__
CHOOSER_LabelArray, proxyopts,
+#else
+ CHOOSER_Labels, &gow->proxyoptslist,
+#endif
CHOOSER_Selected, proxytype,
ChooserEnd,
CHILD_Label, LabelObj,
@@ -889,9 +954,6 @@ void ami_gui_opts_open(void)
LABEL_Text, gadlab[GID_OPTS_PROXY_BYPASS],
LabelEnd,
LayoutEnd, // proxy
-#else
-#warning FIXME FOR OS3
-#endif
CHILD_WeightedHeight, 0,
LAYOUT_AddChild, LayoutVObj,
LAYOUT_SpaceOuter, TRUE,
@@ -947,12 +1009,15 @@ void ami_gui_opts_open(void)
LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, BVS_GROUP,
LAYOUT_Label, gadlab[GRP_OPTS_IMAGES],
-#ifdef __amigaos4__
LAYOUT_AddChild, gow->objects[GID_OPTS_NATIVEBM] = ChooserObj,
GA_ID, GID_OPTS_NATIVEBM,
GA_RelVerify, TRUE,
CHOOSER_PopUp, TRUE,
+#ifdef __amigaos4__
CHOOSER_LabelArray, nativebmopts,
+#else
+ CHOOSER_Labels, &gow->nativebmoptslist,
+#endif
CHOOSER_Selected, nsoption_int(cache_bitmaps),
ChooserEnd,
CHILD_Label, LabelObj,
@@ -963,15 +1028,16 @@ void ami_gui_opts_open(void)
GA_RelVerify, TRUE,
GA_Disabled, ditherdisable,
CHOOSER_PopUp, TRUE,
+#ifdef __amigaos4__
CHOOSER_LabelArray, ditheropts,
+#else
+ CHOOSER_Labels, &gow->ditheroptslist,
+#endif
CHOOSER_Selected, nsoption_int(dither_quality),
ChooserEnd,
CHILD_Label, LabelObj,
LABEL_Text, gadlab[GID_OPTS_DITHERQ],
LabelEnd,
-#else
-#warning FIXME FOR OS3
-#endif
LAYOUT_AddChild, gow->objects[GID_OPTS_SCALEQ] = CheckBoxObj,
GA_ID, GID_OPTS_SCALEQ,
GA_Disabled, scaledisabled,
@@ -1098,20 +1164,20 @@ void ami_gui_opts_open(void)
CHILD_Label, LabelObj,
LABEL_Text, gadlab[GID_OPTS_FONT_FANTASY],
LabelEnd,
-#ifdef __amigaos4__
LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_DEFAULT] = ChooserObj,
GA_ID, GID_OPTS_FONT_DEFAULT,
GA_RelVerify, TRUE,
CHOOSER_PopUp, TRUE,
+#ifdef __amigaos4__
CHOOSER_LabelArray, fontopts,
+#else
+ CHOOSER_Labels, &gow->fontoptslist,
+#endif
CHOOSER_Selected, nsoption_int(font_default) - PLOT_FONT_FAMILY_SANS_SERIF,
ChooserEnd,
CHILD_Label, LabelObj,
LABEL_Text, gadlab[GID_OPTS_FONT_DEFAULT],
LabelEnd,
-#else
-#warning FIXME for OS3
-#endif
LayoutEnd, // font faces
CHILD_WeightedHeight, 0,
LAYOUT_AddChild, LayoutHObj,
@@ -1646,7 +1712,7 @@ static void ami_gui_opts_use(bool save)
} else {
nsoption_set_bool(faster_scroll, false);
}
-#ifdef __amigaos4__
+
GetAttr(RADIOBUTTON_Selected,gow->objects[GID_OPTS_SCREEN],(ULONG *)&data);
switch(data)
{
@@ -1671,9 +1737,6 @@ static void ami_gui_opts_use(bool save)
sprintf(modeid,"0x%lx", id);
nsoption_set_charp(screen_modeid, modeid);
}
-#else
-#warning FIXME FOR OS3
-#endif
GetAttr(GA_Selected,gow->objects[GID_OPTS_WIN_SIMPLE],(ULONG *)&data);
if ((data == TRUE) && (nsoption_bool(window_simple_refresh) == false)) {
@@ -1701,7 +1764,6 @@ static void ami_gui_opts_use(bool save)
nsoption_set_bool(os_mouse_pointers, false);
}
-#ifdef __amigaos4__
GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_PROXY],(ULONG *)&data);
if(data)
{
@@ -1726,19 +1788,12 @@ static void ami_gui_opts_use(bool save)
GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_PROXY_BYPASS],(ULONG *)&data);
nsoption_set_charp(http_proxy_noproxy, (char *)strdup((char *)data));
-#else
-#warning FIXME FOR OS3
-#endif
GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHMAX],(ULONG *)&nsoption_int(max_fetchers));
GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHHOST],(ULONG *)&nsoption_int(max_fetchers_per_host));
GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHCACHE],(ULONG *)&nsoption_int(max_cached_fetch_handles));
-#ifdef __amigaos4__
GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_NATIVEBM],(ULONG *)&nsoption_int(cache_bitmaps));
-#else
-#warning FIXME FOR OS3
-#endif
GetAttr(GA_Selected,gow->objects[GID_OPTS_SCALEQ],(ULONG *)&data);
if (data) {
@@ -1747,11 +1802,7 @@ static void ami_gui_opts_use(bool save)
nsoption_set_bool(scale_quality, false);
}
-#ifdef __amigaos4__
GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_DITHERQ],(ULONG *)&nsoption_int(dither_quality));
-#else
-#warning FIXME FOR OS3
-#endif
GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_ANIMSPEED],(ULONG *)&data);
animspeed = strtof((char *)data, NULL);
@@ -1797,12 +1848,8 @@ static void ami_gui_opts_use(bool save)
if((dot = strrchr(tattr->ta_Name,'.'))) *dot = '\0';
nsoption_set_charp(font_fantasy, (char *)strdup((char *)tattr->ta_Name));
-#ifdef __amigaos4__
GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_FONT_DEFAULT],(ULONG *)&nsoption_int(font_default));
nsoption_set_int(font_default, nsoption_int(font_default) + PLOT_FONT_FAMILY_SANS_SERIF);
-#else
-#warning FIXME FOR OS3
-#endif
GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FONT_SIZE],(ULONG *)&nsoption_int(font_size));
nsoption_set_int(font_size, nsoption_int(font_size) * 10);
@@ -2226,6 +2273,7 @@ void ami_gui_opts_websearch_free(struct List *websearchlist)
do {
nnode = GetSucc(node);
Remove(node);
+ FreeChooserNode(node);
} while((node = nnode));
FreeVec(websearchlist);
--
NetSurf Browser
7 years, 4 months
netsurf: branch master updated. release/3.3-652-gf3332a2
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/f3332a20d76dbfbac1d8d...
...commit http://git.netsurf-browser.org/netsurf.git/commit/f3332a20d76dbfbac1d8db8...
...tree http://git.netsurf-browser.org/netsurf.git/tree/f3332a20d76dbfbac1d8db8b8...
The branch, master has been updated
via f3332a20d76dbfbac1d8db8b8a9edeff97ff537d (commit)
from 04cbc08c5726556e2a7c4b565d3cc933bac7b9bd (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=f3332a20d76dbfbac1d...
commit f3332a20d76dbfbac1d8db8b8a9edeff97ff537d
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Don't read the values of gadgets which were not created.
diff --git a/amiga/gui_options.c b/amiga/gui_options.c
index 16b0c7b..7e940ac 100755
--- a/amiga/gui_options.c
+++ b/amiga/gui_options.c
@@ -1646,7 +1646,7 @@ static void ami_gui_opts_use(bool save)
} else {
nsoption_set_bool(faster_scroll, false);
}
-
+#ifdef __amigaos4__
GetAttr(RADIOBUTTON_Selected,gow->objects[GID_OPTS_SCREEN],(ULONG *)&data);
switch(data)
{
@@ -1671,6 +1671,9 @@ static void ami_gui_opts_use(bool save)
sprintf(modeid,"0x%lx", id);
nsoption_set_charp(screen_modeid, modeid);
}
+#else
+#warning FIXME FOR OS3
+#endif
GetAttr(GA_Selected,gow->objects[GID_OPTS_WIN_SIMPLE],(ULONG *)&data);
if ((data == TRUE) && (nsoption_bool(window_simple_refresh) == false)) {
@@ -1698,6 +1701,7 @@ static void ami_gui_opts_use(bool save)
nsoption_set_bool(os_mouse_pointers, false);
}
+#ifdef __amigaos4__
GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_PROXY],(ULONG *)&data);
if(data)
{
@@ -1722,12 +1726,19 @@ static void ami_gui_opts_use(bool save)
GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_PROXY_BYPASS],(ULONG *)&data);
nsoption_set_charp(http_proxy_noproxy, (char *)strdup((char *)data));
+#else
+#warning FIXME FOR OS3
+#endif
GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHMAX],(ULONG *)&nsoption_int(max_fetchers));
GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHHOST],(ULONG *)&nsoption_int(max_fetchers_per_host));
GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHCACHE],(ULONG *)&nsoption_int(max_cached_fetch_handles));
+#ifdef __amigaos4__
GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_NATIVEBM],(ULONG *)&nsoption_int(cache_bitmaps));
+#else
+#warning FIXME FOR OS3
+#endif
GetAttr(GA_Selected,gow->objects[GID_OPTS_SCALEQ],(ULONG *)&data);
if (data) {
@@ -1736,7 +1747,11 @@ static void ami_gui_opts_use(bool save)
nsoption_set_bool(scale_quality, false);
}
+#ifdef __amigaos4__
GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_DITHERQ],(ULONG *)&nsoption_int(dither_quality));
+#else
+#warning FIXME FOR OS3
+#endif
GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_ANIMSPEED],(ULONG *)&data);
animspeed = strtof((char *)data, NULL);
@@ -1782,8 +1797,12 @@ static void ami_gui_opts_use(bool save)
if((dot = strrchr(tattr->ta_Name,'.'))) *dot = '\0';
nsoption_set_charp(font_fantasy, (char *)strdup((char *)tattr->ta_Name));
+#ifdef __amigaos4__
GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_FONT_DEFAULT],(ULONG *)&nsoption_int(font_default));
nsoption_set_int(font_default, nsoption_int(font_default) + PLOT_FONT_FAMILY_SANS_SERIF);
+#else
+#warning FIXME FOR OS3
+#endif
GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FONT_SIZE],(ULONG *)&nsoption_int(font_size));
nsoption_set_int(font_size, nsoption_int(font_size) * 10);
-----------------------------------------------------------------------
Summary of changes:
amiga/gui_options.c | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/amiga/gui_options.c b/amiga/gui_options.c
index 16b0c7b..7e940ac 100755
--- a/amiga/gui_options.c
+++ b/amiga/gui_options.c
@@ -1646,7 +1646,7 @@ static void ami_gui_opts_use(bool save)
} else {
nsoption_set_bool(faster_scroll, false);
}
-
+#ifdef __amigaos4__
GetAttr(RADIOBUTTON_Selected,gow->objects[GID_OPTS_SCREEN],(ULONG *)&data);
switch(data)
{
@@ -1671,6 +1671,9 @@ static void ami_gui_opts_use(bool save)
sprintf(modeid,"0x%lx", id);
nsoption_set_charp(screen_modeid, modeid);
}
+#else
+#warning FIXME FOR OS3
+#endif
GetAttr(GA_Selected,gow->objects[GID_OPTS_WIN_SIMPLE],(ULONG *)&data);
if ((data == TRUE) && (nsoption_bool(window_simple_refresh) == false)) {
@@ -1698,6 +1701,7 @@ static void ami_gui_opts_use(bool save)
nsoption_set_bool(os_mouse_pointers, false);
}
+#ifdef __amigaos4__
GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_PROXY],(ULONG *)&data);
if(data)
{
@@ -1722,12 +1726,19 @@ static void ami_gui_opts_use(bool save)
GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_PROXY_BYPASS],(ULONG *)&data);
nsoption_set_charp(http_proxy_noproxy, (char *)strdup((char *)data));
+#else
+#warning FIXME FOR OS3
+#endif
GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHMAX],(ULONG *)&nsoption_int(max_fetchers));
GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHHOST],(ULONG *)&nsoption_int(max_fetchers_per_host));
GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FETCHCACHE],(ULONG *)&nsoption_int(max_cached_fetch_handles));
+#ifdef __amigaos4__
GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_NATIVEBM],(ULONG *)&nsoption_int(cache_bitmaps));
+#else
+#warning FIXME FOR OS3
+#endif
GetAttr(GA_Selected,gow->objects[GID_OPTS_SCALEQ],(ULONG *)&data);
if (data) {
@@ -1736,7 +1747,11 @@ static void ami_gui_opts_use(bool save)
nsoption_set_bool(scale_quality, false);
}
+#ifdef __amigaos4__
GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_DITHERQ],(ULONG *)&nsoption_int(dither_quality));
+#else
+#warning FIXME FOR OS3
+#endif
GetAttr(STRINGA_TextVal,gow->objects[GID_OPTS_ANIMSPEED],(ULONG *)&data);
animspeed = strtof((char *)data, NULL);
@@ -1782,8 +1797,12 @@ static void ami_gui_opts_use(bool save)
if((dot = strrchr(tattr->ta_Name,'.'))) *dot = '\0';
nsoption_set_charp(font_fantasy, (char *)strdup((char *)tattr->ta_Name));
+#ifdef __amigaos4__
GetAttr(CHOOSER_Selected,gow->objects[GID_OPTS_FONT_DEFAULT],(ULONG *)&nsoption_int(font_default));
nsoption_set_int(font_default, nsoption_int(font_default) + PLOT_FONT_FAMILY_SANS_SERIF);
+#else
+#warning FIXME FOR OS3
+#endif
GetAttr(INTEGER_Number,gow->objects[GID_OPTS_FONT_SIZE],(ULONG *)&nsoption_int(font_size));
nsoption_set_int(font_size, nsoption_int(font_size) * 10);
--
NetSurf Browser
7 years, 4 months
netsurf: branch master updated. release/3.3-651-g04cbc08
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/04cbc08c5726556e2a7c4...
...commit http://git.netsurf-browser.org/netsurf.git/commit/04cbc08c5726556e2a7c4b5...
...tree http://git.netsurf-browser.org/netsurf.git/tree/04cbc08c5726556e2a7c4b565...
The branch, master has been updated
via 04cbc08c5726556e2a7c4b565d3cc933bac7b9bd (commit)
via 520e81f98d7560cb39a9141c698723e2e36aa675 (commit)
via 9505b8e5143b3b11f86469818258f1b628053d08 (commit)
from 78dec4d5156d738c0d4901e6761ab9f406d81834 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=04cbc08c5726556e2a7...
commit 04cbc08c5726556e2a7c4b565d3cc933bac7b9bd
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Don't use ami_NewMinList as it potentially writes past the MinList structure on OS3.
Instead we use ami_AllocMinList and pointers.
diff --git a/amiga/launch.c b/amiga/launch.c
index 9ac1c5b..1f2b9e1 100755
--- a/amiga/launch.c
+++ b/amiga/launch.c
@@ -38,7 +38,7 @@
struct Library *OpenURLBase = NULL;
struct OpenURLIFace *IOpenURL = NULL;
-struct MinList ami_unsupportedprotocols;
+struct MinList *ami_unsupportedprotocols;
struct ami_protocol
{
@@ -65,7 +65,7 @@ static struct ami_protocol *ami_openurl_add_protocol(const char *url)
return NULL;
}
- AddTail((struct List *)&ami_unsupportedprotocols, (struct Node *)ami_p);
+ AddTail((struct List *)ami_unsupportedprotocols, (struct Node *)ami_p);
return ami_p;
}
@@ -86,6 +86,8 @@ static void ami_openurl_free_list(struct MinList *list)
FreeVec(node);
node = NULL;
}while((node=nnode));
+
+ FreeVec(list);
}
static BOOL ami_openurl_check_list(struct MinList *list, nsurl *url)
@@ -132,7 +134,7 @@ void ami_openurl_open(void)
}
}
- ami_NewMinList(&ami_unsupportedprotocols);
+ ami_unsupportedprotocols = ami_AllocMinList();
}
void ami_openurl_close(void)
@@ -142,7 +144,7 @@ void ami_openurl_close(void)
#endif
if(OpenURLBase) CloseLibrary(OpenURLBase);
- ami_openurl_free_list(&ami_unsupportedprotocols);
+ ami_openurl_free_list(ami_unsupportedprotocols);
}
nserror gui_launch_url(struct nsurl *url)
@@ -152,7 +154,7 @@ nserror gui_launch_url(struct nsurl *url)
#endif
char *launchurl = NULL;
- if(ami_openurl_check_list(&ami_unsupportedprotocols, url) == FALSE)
+ if(ami_openurl_check_list(ami_unsupportedprotocols, url) == FALSE)
{
if(IOpenURL)
{
diff --git a/amiga/object.h b/amiga/object.h
index 6ea9bd1..be96504 100755
--- a/amiga/object.h
+++ b/amiga/object.h
@@ -57,7 +57,6 @@ void FreeObjList(struct MinList *objlist);
/** List abstraction as OS3 appears to have problems with NewMinList() **/
struct MinList *ami_AllocMinList(void);
-void ami_NewMinList(struct MinList *list);
/** Initialisation for itempool **/
bool ami_object_init(void);
diff --git a/amiga/tree.c b/amiga/tree.c
index 5408209..3fdb529 100644
--- a/amiga/tree.c
+++ b/amiga/tree.c
@@ -109,7 +109,7 @@ struct treeview_window {
char *sslerr;
char *sslaccept;
char *sslreject;
- struct MinList shared_pens;
+ struct MinList *shared_pens;
};
struct ami_tree_redraw_req {
@@ -887,7 +887,8 @@ void ami_tree_close(struct treeview_window *twin)
DisposeObject(twin->objects[OID_MAIN]);
DelObjectNoFree(twin->node);
ami_free_layers(&twin->globals);
- ami_plot_release_pens(&twin->shared_pens);
+ ami_plot_release_pens(twin->shared_pens);
+ FreeVec(twin->shared_pens);
for(i=0;i<AMI_TREE_MENU_ITEMS;i++) {
if(twin->menu_name[i] && (twin->menu_name[i] != NM_BARLABEL))
@@ -1485,8 +1486,8 @@ struct treeview_window *ami_tree_create(int flags,
twin->ssl_data = ssl_data;
twin->tree = tree_create(flags, &ami_tree_callbacks, twin);
- ami_NewMinList(&twin->shared_pens);
- twin->globals.shared_pens = &twin->shared_pens;
+ twin->shared_pens = ami_AllocMinList();
+ twin->globals.shared_pens = twin->shared_pens;
return twin;
}
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=520e81f98d7560cb39a...
commit 520e81f98d7560cb39a9141c698723e2e36aa675
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Alloc specifying local charset on OS3 as we can't get this from Locale
diff --git a/amiga/options.h b/amiga/options.h
index c46c979..0c4db5c 100644
--- a/amiga/options.h
+++ b/amiga/options.h
@@ -90,5 +90,6 @@ NSOPTION_BOOL(accept_lang_locale, true)
/* Options relevant for OS3 only */
#ifndef __amigaos4__
NSOPTION_BOOL(friend_bitmap, false)
+NSOPTION_STRING(local_charset, "ISO-8859-1")
#endif
diff --git a/amiga/os3support.h b/amiga/os3support.h
index 5f21fad..c1db054 100644
--- a/amiga/os3support.h
+++ b/amiga/os3support.h
@@ -140,7 +140,7 @@
#define ESetInfo SetInfo
/* Only used in one place we haven't ifdeffed, where it returns the charset name */
-#define ObtainCharsetInfo(A,B,C) (const char *)"ISO-8859-1"
+#define ObtainCharsetInfo(A,B,C) (const char *)nsoption_charp(local_charset)
/* DOS */
#define AllocSysObjectTags(A,B,C,D) CreateMsgPort() /* Assume ASOT_PORT for now */
diff --git a/amiga/utf8.c b/amiga/utf8.c
index 9bf1b1a..91d7c90 100755
--- a/amiga/utf8.c
+++ b/amiga/utf8.c
@@ -23,6 +23,7 @@
#include <proto/diskfont.h>
#include <diskfont/diskfonttag.h>
+#include "utils/nsoption.h"
#include "utils/utf8.h"
#include "desktop/gui_utf8.h"
@@ -37,6 +38,8 @@ nserror utf8_from_local_encoding(const char *string, size_t len, char **result)
charset = GetDiskFontCtrl(DFCTRL_CHARSET);
encname = (const char *) ObtainCharsetInfo(DFCS_NUMBER, charset, DFCS_MIMENAME);
+#else
+ encname = nsoption_charp(local_charset);
#endif
return utf8_from_enc(string,encname,len,result,NULL);
@@ -51,6 +54,8 @@ nserror utf8_to_local_encoding(const char *string, size_t len, char **result)
charset = GetDiskFontCtrl(DFCTRL_CHARSET);
encname = (const char *) ObtainCharsetInfo(DFCS_NUMBER, charset, DFCS_MIMENAME);
+#else
+ encname = nsoption_charp(local_charset);
#endif
return utf8_to_enc(string,encname,len,result);
@@ -96,3 +101,4 @@ static struct gui_utf8_table utf8_table = {
};
struct gui_utf8_table *amiga_utf8_table = &utf8_table;
+
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=9505b8e5143b3b11f86...
commit 9505b8e5143b3b11f86469818258f1b628053d08
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Make most of the prefs GUI display (and hopefully work) under OS3
page.gadget is not a public class in OS3
Some gadgets which will not work have been temporarily #ifdef'd for OS4 only
Some gadgets which are not relevant have been disabled to avoid random values being set
diff --git a/amiga/gui_options.c b/amiga/gui_options.c
index 7e800d2..16b0c7b 100755
--- a/amiga/gui_options.c
+++ b/amiga/gui_options.c
@@ -454,8 +454,12 @@ void ami_gui_opts_open(void)
return;
}
+#ifdef __amigaos4__
if(LIB_IS_AT_LEAST((struct Library *)IntuitionBase, 53, 42)) ptr_disable = TRUE;
-
+#else
+ ptr_disable = TRUE;
+#endif
+
if(nsoption_charp(pubscreen_name))
{
if(strcmp(nsoption_charp(pubscreen_name),"Workbench") == 0)
@@ -723,6 +727,7 @@ void ami_gui_opts_open(void)
LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, BVS_GROUP,
LAYOUT_Label, gadlab[GRP_OPTS_SCREEN],
+#ifdef __amigaos4__
LAYOUT_AddChild, LayoutHObj,
LAYOUT_AddChild, gow->objects[GID_OPTS_SCREEN] = RadioButtonObj,
GA_ID, GID_OPTS_SCREEN,
@@ -750,6 +755,9 @@ void ami_gui_opts_open(void)
LayoutEnd,
CHILD_WeightedHeight,0,
LayoutEnd,
+#else
+#warning FIXME FOR OS3
+#endif
LayoutEnd, // screen
CHILD_WeightedHeight,0,
LAYOUT_AddChild, LayoutVObj,
@@ -782,7 +790,6 @@ void ami_gui_opts_open(void)
LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, BVS_GROUP,
LAYOUT_Label, gadlab[GRP_OPTS_MOUSE],
-#ifdef __amigaos4__
LAYOUT_AddChild, gow->objects[GID_OPTS_PTRTRUE] = CheckBoxObj,
GA_ID, GID_OPTS_PTRTRUE,
GA_RelVerify, TRUE,
@@ -790,7 +797,6 @@ void ami_gui_opts_open(void)
GA_Selected, nsoption_bool(truecolour_mouse_pointers),
GA_Disabled, ptr_disable,
CheckBoxEnd,
-#endif
LAYOUT_AddChild, gow->objects[GID_OPTS_PTROS] = CheckBoxObj,
GA_ID, GID_OPTS_PTROS,
GA_RelVerify, TRUE,
@@ -811,6 +817,7 @@ void ami_gui_opts_open(void)
*/
PAGE_Add, LayoutVObj,
LAYOUT_AddChild, LayoutVObj,
+#ifdef __amigaos4__
LAYOUT_AddChild, LayoutVObj,
LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, BVS_GROUP,
@@ -882,6 +889,9 @@ void ami_gui_opts_open(void)
LABEL_Text, gadlab[GID_OPTS_PROXY_BYPASS],
LabelEnd,
LayoutEnd, // proxy
+#else
+#warning FIXME FOR OS3
+#endif
CHILD_WeightedHeight, 0,
LAYOUT_AddChild, LayoutVObj,
LAYOUT_SpaceOuter, TRUE,
@@ -937,6 +947,7 @@ void ami_gui_opts_open(void)
LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, BVS_GROUP,
LAYOUT_Label, gadlab[GRP_OPTS_IMAGES],
+#ifdef __amigaos4__
LAYOUT_AddChild, gow->objects[GID_OPTS_NATIVEBM] = ChooserObj,
GA_ID, GID_OPTS_NATIVEBM,
GA_RelVerify, TRUE,
@@ -958,6 +969,9 @@ void ami_gui_opts_open(void)
CHILD_Label, LabelObj,
LABEL_Text, gadlab[GID_OPTS_DITHERQ],
LabelEnd,
+#else
+#warning FIXME FOR OS3
+#endif
LAYOUT_AddChild, gow->objects[GID_OPTS_SCALEQ] = CheckBoxObj,
GA_ID, GID_OPTS_SCALEQ,
GA_Disabled, scaledisabled,
@@ -1084,6 +1098,7 @@ void ami_gui_opts_open(void)
CHILD_Label, LabelObj,
LABEL_Text, gadlab[GID_OPTS_FONT_FANTASY],
LabelEnd,
+#ifdef __amigaos4__
LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_DEFAULT] = ChooserObj,
GA_ID, GID_OPTS_FONT_DEFAULT,
GA_RelVerify, TRUE,
@@ -1094,6 +1109,9 @@ void ami_gui_opts_open(void)
CHILD_Label, LabelObj,
LABEL_Text, gadlab[GID_OPTS_FONT_DEFAULT],
LabelEnd,
+#else
+#warning FIXME for OS3
+#endif
LayoutEnd, // font faces
CHILD_WeightedHeight, 0,
LAYOUT_AddChild, LayoutHObj,
@@ -1138,7 +1156,6 @@ void ami_gui_opts_open(void)
LABEL_Text, gadlab[GID_OPTS_FONT_MINSIZE],
LabelEnd,
LayoutEnd,
-#ifdef __amigaos4__
LAYOUT_AddChild, LayoutVObj,
LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, BVS_GROUP,
@@ -1148,9 +1165,11 @@ void ami_gui_opts_open(void)
GA_RelVerify, TRUE,
GA_Text, gadlab[GID_OPTS_FONT_ANTIALIASING],
GA_Selected, nsoption_bool(font_antialiasing),
+#ifndef __amigaos4__
+ GA_Disabled, TRUE,
+#endif
CheckBoxEnd,
LayoutEnd,
-#endif
LayoutEnd,
CHILD_WeightedHeight, 0,
LayoutEnd, // page vgroup
@@ -1274,15 +1293,16 @@ void ami_gui_opts_open(void)
GA_Text, gadlab[GID_OPTS_OVERWRITE],
GA_Selected, nsoption_bool(ask_overwrite),
CheckBoxEnd,
-#ifdef __amigaos4__
LAYOUT_AddChild, gow->objects[GID_OPTS_NOTIFY] = CheckBoxObj,
GA_ID, GID_OPTS_NOTIFY,
GA_RelVerify, TRUE,
GA_Disabled, download_notify_disabled,
GA_Text, gadlab[GID_OPTS_NOTIFY],
GA_Selected, nsoption_bool(download_notify),
- CheckBoxEnd,
+#ifndef __amigaos4__
+ GA_Disabled, TRUE,
#endif
+ CheckBoxEnd,
LayoutEnd,
LAYOUT_AddChild, gow->objects[GID_OPTS_DLDIR] = GetFileObj,
GA_ID, GID_OPTS_DLDIR,
@@ -1314,14 +1334,15 @@ void ami_gui_opts_open(void)
GA_Text, gadlab[GID_OPTS_CLOSE_NO_QUIT],
GA_Selected, nsoption_bool(close_no_quit),
CheckBoxEnd,
-#ifdef __amigaos4__
LAYOUT_AddChild, gow->objects[GID_OPTS_DOCKY] = CheckBoxObj,
GA_ID, GID_OPTS_DOCKY,
GA_RelVerify, TRUE,
GA_Text, gadlab[GID_OPTS_DOCKY],
GA_Selected, !nsoption_bool(hide_docky_icon),
- CheckBoxEnd,
+#ifndef __amigaos4__
+ GA_Disabled, TRUE,
#endif
+ CheckBoxEnd,
LayoutEnd, // behaviour
CHILD_WeightedHeight, 0,
LayoutEnd, // hgroup
@@ -1368,7 +1389,6 @@ void ami_gui_opts_open(void)
GA_Text, gadlab[GID_OPTS_FASTSCROLL],
GA_Selected, nsoption_bool(faster_scroll),
CheckBoxEnd,
-#ifdef __amigaos4__
LAYOUT_AddChild, gow->objects[GID_OPTS_SELECTMENU] = CheckBoxObj,
GA_ID, GID_OPTS_SELECTMENU,
GA_RelVerify, TRUE,
@@ -1376,7 +1396,6 @@ void ami_gui_opts_open(void)
GA_Selected, !nsoption_bool(core_select_menu),
GA_Disabled, !ami_selectmenu_is_safe(),
CheckBoxEnd,
-#endif
LayoutEnd, // misc
CHILD_WeightedHeight, 0,
diff --git a/amiga/libs.c b/amiga/libs.c
index 76ac876..7c130a8 100644
--- a/amiga/libs.c
+++ b/amiga/libs.c
@@ -185,6 +185,9 @@ AMINS_CLASS_STRUCT(Label);
AMINS_CLASS_STRUCT(Layout);
AMINS_CLASS_STRUCT(ListBrowser);
AMINS_CLASS_STRUCT(RadioButton);
+#ifndef __amigaos4__
+AMINS_CLASS_STRUCT(Page);
+#endif
AMINS_CLASS_STRUCT(Scroller);
AMINS_CLASS_STRUCT(Space);
AMINS_CLASS_STRUCT(SpeedBar);
@@ -260,6 +263,10 @@ bool ami_libs_open(void)
AMINS_CLASS_OPEN("gadgets/string.gadget", 44, String, STRING, false)
AMINS_CLASS_OPEN("window.class", 44, Window, WINDOW, false)
+#ifndef __amigaos4__
+ PageClass = PAGE_GetClass();
+#endif
+
return true;
}
diff --git a/amiga/libs.h b/amiga/libs.h
index 57a430f..aa3622a 100644
--- a/amiga/libs.h
+++ b/amiga/libs.h
@@ -36,6 +36,10 @@ extern Class *IntegerClass;
extern Class *LabelClass;
extern Class *LayoutClass;
extern Class *ListBrowserClass;
+#ifndef __amigaos4__
+/* OS4 uses a public class name instead */
+extern Class *PageClass;
+#endif
extern Class *RadioButtonClass;
extern Class *ScrollerClass;
extern Class *SpaceClass;
@@ -59,7 +63,11 @@ extern Class *WindowClass;
#define LabelObj NewObject(LabelClass, NULL
#define LayoutHObj NewObject(LayoutClass, NULL, LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ
#define LayoutVObj NewObject(LayoutClass, NULL, LAYOUT_Orientation, LAYOUT_ORIENT_VERT
+#ifdef __amigaos4__
#define PageObj NewObject(NULL, "page.gadget"
+#else
+#define PageObj NewObject(PageClass, NULL
+#endif
#define RadioButtonObj NewObject(RadioButtonClass, NULL
#define ScrollerObj NewObject(ScrollerClass, NULL
#define SpaceObj NewObject(SpaceClass, NULL
-----------------------------------------------------------------------
Summary of changes:
amiga/gui_options.c | 41 ++++++++++++++++++++++++++++++-----------
amiga/launch.c | 12 +++++++-----
amiga/libs.c | 7 +++++++
amiga/libs.h | 8 ++++++++
amiga/object.h | 1 -
amiga/options.h | 1 +
amiga/os3support.h | 2 +-
amiga/tree.c | 9 +++++----
amiga/utf8.c | 6 ++++++
9 files changed, 65 insertions(+), 22 deletions(-)
diff --git a/amiga/gui_options.c b/amiga/gui_options.c
index 7e800d2..16b0c7b 100755
--- a/amiga/gui_options.c
+++ b/amiga/gui_options.c
@@ -454,8 +454,12 @@ void ami_gui_opts_open(void)
return;
}
+#ifdef __amigaos4__
if(LIB_IS_AT_LEAST((struct Library *)IntuitionBase, 53, 42)) ptr_disable = TRUE;
-
+#else
+ ptr_disable = TRUE;
+#endif
+
if(nsoption_charp(pubscreen_name))
{
if(strcmp(nsoption_charp(pubscreen_name),"Workbench") == 0)
@@ -723,6 +727,7 @@ void ami_gui_opts_open(void)
LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, BVS_GROUP,
LAYOUT_Label, gadlab[GRP_OPTS_SCREEN],
+#ifdef __amigaos4__
LAYOUT_AddChild, LayoutHObj,
LAYOUT_AddChild, gow->objects[GID_OPTS_SCREEN] = RadioButtonObj,
GA_ID, GID_OPTS_SCREEN,
@@ -750,6 +755,9 @@ void ami_gui_opts_open(void)
LayoutEnd,
CHILD_WeightedHeight,0,
LayoutEnd,
+#else
+#warning FIXME FOR OS3
+#endif
LayoutEnd, // screen
CHILD_WeightedHeight,0,
LAYOUT_AddChild, LayoutVObj,
@@ -782,7 +790,6 @@ void ami_gui_opts_open(void)
LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, BVS_GROUP,
LAYOUT_Label, gadlab[GRP_OPTS_MOUSE],
-#ifdef __amigaos4__
LAYOUT_AddChild, gow->objects[GID_OPTS_PTRTRUE] = CheckBoxObj,
GA_ID, GID_OPTS_PTRTRUE,
GA_RelVerify, TRUE,
@@ -790,7 +797,6 @@ void ami_gui_opts_open(void)
GA_Selected, nsoption_bool(truecolour_mouse_pointers),
GA_Disabled, ptr_disable,
CheckBoxEnd,
-#endif
LAYOUT_AddChild, gow->objects[GID_OPTS_PTROS] = CheckBoxObj,
GA_ID, GID_OPTS_PTROS,
GA_RelVerify, TRUE,
@@ -811,6 +817,7 @@ void ami_gui_opts_open(void)
*/
PAGE_Add, LayoutVObj,
LAYOUT_AddChild, LayoutVObj,
+#ifdef __amigaos4__
LAYOUT_AddChild, LayoutVObj,
LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, BVS_GROUP,
@@ -882,6 +889,9 @@ void ami_gui_opts_open(void)
LABEL_Text, gadlab[GID_OPTS_PROXY_BYPASS],
LabelEnd,
LayoutEnd, // proxy
+#else
+#warning FIXME FOR OS3
+#endif
CHILD_WeightedHeight, 0,
LAYOUT_AddChild, LayoutVObj,
LAYOUT_SpaceOuter, TRUE,
@@ -937,6 +947,7 @@ void ami_gui_opts_open(void)
LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, BVS_GROUP,
LAYOUT_Label, gadlab[GRP_OPTS_IMAGES],
+#ifdef __amigaos4__
LAYOUT_AddChild, gow->objects[GID_OPTS_NATIVEBM] = ChooserObj,
GA_ID, GID_OPTS_NATIVEBM,
GA_RelVerify, TRUE,
@@ -958,6 +969,9 @@ void ami_gui_opts_open(void)
CHILD_Label, LabelObj,
LABEL_Text, gadlab[GID_OPTS_DITHERQ],
LabelEnd,
+#else
+#warning FIXME FOR OS3
+#endif
LAYOUT_AddChild, gow->objects[GID_OPTS_SCALEQ] = CheckBoxObj,
GA_ID, GID_OPTS_SCALEQ,
GA_Disabled, scaledisabled,
@@ -1084,6 +1098,7 @@ void ami_gui_opts_open(void)
CHILD_Label, LabelObj,
LABEL_Text, gadlab[GID_OPTS_FONT_FANTASY],
LabelEnd,
+#ifdef __amigaos4__
LAYOUT_AddChild, gow->objects[GID_OPTS_FONT_DEFAULT] = ChooserObj,
GA_ID, GID_OPTS_FONT_DEFAULT,
GA_RelVerify, TRUE,
@@ -1094,6 +1109,9 @@ void ami_gui_opts_open(void)
CHILD_Label, LabelObj,
LABEL_Text, gadlab[GID_OPTS_FONT_DEFAULT],
LabelEnd,
+#else
+#warning FIXME for OS3
+#endif
LayoutEnd, // font faces
CHILD_WeightedHeight, 0,
LAYOUT_AddChild, LayoutHObj,
@@ -1138,7 +1156,6 @@ void ami_gui_opts_open(void)
LABEL_Text, gadlab[GID_OPTS_FONT_MINSIZE],
LabelEnd,
LayoutEnd,
-#ifdef __amigaos4__
LAYOUT_AddChild, LayoutVObj,
LAYOUT_SpaceOuter, TRUE,
LAYOUT_BevelStyle, BVS_GROUP,
@@ -1148,9 +1165,11 @@ void ami_gui_opts_open(void)
GA_RelVerify, TRUE,
GA_Text, gadlab[GID_OPTS_FONT_ANTIALIASING],
GA_Selected, nsoption_bool(font_antialiasing),
+#ifndef __amigaos4__
+ GA_Disabled, TRUE,
+#endif
CheckBoxEnd,
LayoutEnd,
-#endif
LayoutEnd,
CHILD_WeightedHeight, 0,
LayoutEnd, // page vgroup
@@ -1274,15 +1293,16 @@ void ami_gui_opts_open(void)
GA_Text, gadlab[GID_OPTS_OVERWRITE],
GA_Selected, nsoption_bool(ask_overwrite),
CheckBoxEnd,
-#ifdef __amigaos4__
LAYOUT_AddChild, gow->objects[GID_OPTS_NOTIFY] = CheckBoxObj,
GA_ID, GID_OPTS_NOTIFY,
GA_RelVerify, TRUE,
GA_Disabled, download_notify_disabled,
GA_Text, gadlab[GID_OPTS_NOTIFY],
GA_Selected, nsoption_bool(download_notify),
- CheckBoxEnd,
+#ifndef __amigaos4__
+ GA_Disabled, TRUE,
#endif
+ CheckBoxEnd,
LayoutEnd,
LAYOUT_AddChild, gow->objects[GID_OPTS_DLDIR] = GetFileObj,
GA_ID, GID_OPTS_DLDIR,
@@ -1314,14 +1334,15 @@ void ami_gui_opts_open(void)
GA_Text, gadlab[GID_OPTS_CLOSE_NO_QUIT],
GA_Selected, nsoption_bool(close_no_quit),
CheckBoxEnd,
-#ifdef __amigaos4__
LAYOUT_AddChild, gow->objects[GID_OPTS_DOCKY] = CheckBoxObj,
GA_ID, GID_OPTS_DOCKY,
GA_RelVerify, TRUE,
GA_Text, gadlab[GID_OPTS_DOCKY],
GA_Selected, !nsoption_bool(hide_docky_icon),
- CheckBoxEnd,
+#ifndef __amigaos4__
+ GA_Disabled, TRUE,
#endif
+ CheckBoxEnd,
LayoutEnd, // behaviour
CHILD_WeightedHeight, 0,
LayoutEnd, // hgroup
@@ -1368,7 +1389,6 @@ void ami_gui_opts_open(void)
GA_Text, gadlab[GID_OPTS_FASTSCROLL],
GA_Selected, nsoption_bool(faster_scroll),
CheckBoxEnd,
-#ifdef __amigaos4__
LAYOUT_AddChild, gow->objects[GID_OPTS_SELECTMENU] = CheckBoxObj,
GA_ID, GID_OPTS_SELECTMENU,
GA_RelVerify, TRUE,
@@ -1376,7 +1396,6 @@ void ami_gui_opts_open(void)
GA_Selected, !nsoption_bool(core_select_menu),
GA_Disabled, !ami_selectmenu_is_safe(),
CheckBoxEnd,
-#endif
LayoutEnd, // misc
CHILD_WeightedHeight, 0,
diff --git a/amiga/launch.c b/amiga/launch.c
index 9ac1c5b..1f2b9e1 100755
--- a/amiga/launch.c
+++ b/amiga/launch.c
@@ -38,7 +38,7 @@
struct Library *OpenURLBase = NULL;
struct OpenURLIFace *IOpenURL = NULL;
-struct MinList ami_unsupportedprotocols;
+struct MinList *ami_unsupportedprotocols;
struct ami_protocol
{
@@ -65,7 +65,7 @@ static struct ami_protocol *ami_openurl_add_protocol(const char *url)
return NULL;
}
- AddTail((struct List *)&ami_unsupportedprotocols, (struct Node *)ami_p);
+ AddTail((struct List *)ami_unsupportedprotocols, (struct Node *)ami_p);
return ami_p;
}
@@ -86,6 +86,8 @@ static void ami_openurl_free_list(struct MinList *list)
FreeVec(node);
node = NULL;
}while((node=nnode));
+
+ FreeVec(list);
}
static BOOL ami_openurl_check_list(struct MinList *list, nsurl *url)
@@ -132,7 +134,7 @@ void ami_openurl_open(void)
}
}
- ami_NewMinList(&ami_unsupportedprotocols);
+ ami_unsupportedprotocols = ami_AllocMinList();
}
void ami_openurl_close(void)
@@ -142,7 +144,7 @@ void ami_openurl_close(void)
#endif
if(OpenURLBase) CloseLibrary(OpenURLBase);
- ami_openurl_free_list(&ami_unsupportedprotocols);
+ ami_openurl_free_list(ami_unsupportedprotocols);
}
nserror gui_launch_url(struct nsurl *url)
@@ -152,7 +154,7 @@ nserror gui_launch_url(struct nsurl *url)
#endif
char *launchurl = NULL;
- if(ami_openurl_check_list(&ami_unsupportedprotocols, url) == FALSE)
+ if(ami_openurl_check_list(ami_unsupportedprotocols, url) == FALSE)
{
if(IOpenURL)
{
diff --git a/amiga/libs.c b/amiga/libs.c
index 76ac876..7c130a8 100644
--- a/amiga/libs.c
+++ b/amiga/libs.c
@@ -185,6 +185,9 @@ AMINS_CLASS_STRUCT(Label);
AMINS_CLASS_STRUCT(Layout);
AMINS_CLASS_STRUCT(ListBrowser);
AMINS_CLASS_STRUCT(RadioButton);
+#ifndef __amigaos4__
+AMINS_CLASS_STRUCT(Page);
+#endif
AMINS_CLASS_STRUCT(Scroller);
AMINS_CLASS_STRUCT(Space);
AMINS_CLASS_STRUCT(SpeedBar);
@@ -260,6 +263,10 @@ bool ami_libs_open(void)
AMINS_CLASS_OPEN("gadgets/string.gadget", 44, String, STRING, false)
AMINS_CLASS_OPEN("window.class", 44, Window, WINDOW, false)
+#ifndef __amigaos4__
+ PageClass = PAGE_GetClass();
+#endif
+
return true;
}
diff --git a/amiga/libs.h b/amiga/libs.h
index 57a430f..aa3622a 100644
--- a/amiga/libs.h
+++ b/amiga/libs.h
@@ -36,6 +36,10 @@ extern Class *IntegerClass;
extern Class *LabelClass;
extern Class *LayoutClass;
extern Class *ListBrowserClass;
+#ifndef __amigaos4__
+/* OS4 uses a public class name instead */
+extern Class *PageClass;
+#endif
extern Class *RadioButtonClass;
extern Class *ScrollerClass;
extern Class *SpaceClass;
@@ -59,7 +63,11 @@ extern Class *WindowClass;
#define LabelObj NewObject(LabelClass, NULL
#define LayoutHObj NewObject(LayoutClass, NULL, LAYOUT_Orientation, LAYOUT_ORIENT_HORIZ
#define LayoutVObj NewObject(LayoutClass, NULL, LAYOUT_Orientation, LAYOUT_ORIENT_VERT
+#ifdef __amigaos4__
#define PageObj NewObject(NULL, "page.gadget"
+#else
+#define PageObj NewObject(PageClass, NULL
+#endif
#define RadioButtonObj NewObject(RadioButtonClass, NULL
#define ScrollerObj NewObject(ScrollerClass, NULL
#define SpaceObj NewObject(SpaceClass, NULL
diff --git a/amiga/object.h b/amiga/object.h
index 6ea9bd1..be96504 100755
--- a/amiga/object.h
+++ b/amiga/object.h
@@ -57,7 +57,6 @@ void FreeObjList(struct MinList *objlist);
/** List abstraction as OS3 appears to have problems with NewMinList() **/
struct MinList *ami_AllocMinList(void);
-void ami_NewMinList(struct MinList *list);
/** Initialisation for itempool **/
bool ami_object_init(void);
diff --git a/amiga/options.h b/amiga/options.h
index c46c979..0c4db5c 100644
--- a/amiga/options.h
+++ b/amiga/options.h
@@ -90,5 +90,6 @@ NSOPTION_BOOL(accept_lang_locale, true)
/* Options relevant for OS3 only */
#ifndef __amigaos4__
NSOPTION_BOOL(friend_bitmap, false)
+NSOPTION_STRING(local_charset, "ISO-8859-1")
#endif
diff --git a/amiga/os3support.h b/amiga/os3support.h
index 5f21fad..c1db054 100644
--- a/amiga/os3support.h
+++ b/amiga/os3support.h
@@ -140,7 +140,7 @@
#define ESetInfo SetInfo
/* Only used in one place we haven't ifdeffed, where it returns the charset name */
-#define ObtainCharsetInfo(A,B,C) (const char *)"ISO-8859-1"
+#define ObtainCharsetInfo(A,B,C) (const char *)nsoption_charp(local_charset)
/* DOS */
#define AllocSysObjectTags(A,B,C,D) CreateMsgPort() /* Assume ASOT_PORT for now */
diff --git a/amiga/tree.c b/amiga/tree.c
index 5408209..3fdb529 100644
--- a/amiga/tree.c
+++ b/amiga/tree.c
@@ -109,7 +109,7 @@ struct treeview_window {
char *sslerr;
char *sslaccept;
char *sslreject;
- struct MinList shared_pens;
+ struct MinList *shared_pens;
};
struct ami_tree_redraw_req {
@@ -887,7 +887,8 @@ void ami_tree_close(struct treeview_window *twin)
DisposeObject(twin->objects[OID_MAIN]);
DelObjectNoFree(twin->node);
ami_free_layers(&twin->globals);
- ami_plot_release_pens(&twin->shared_pens);
+ ami_plot_release_pens(twin->shared_pens);
+ FreeVec(twin->shared_pens);
for(i=0;i<AMI_TREE_MENU_ITEMS;i++) {
if(twin->menu_name[i] && (twin->menu_name[i] != NM_BARLABEL))
@@ -1485,8 +1486,8 @@ struct treeview_window *ami_tree_create(int flags,
twin->ssl_data = ssl_data;
twin->tree = tree_create(flags, &ami_tree_callbacks, twin);
- ami_NewMinList(&twin->shared_pens);
- twin->globals.shared_pens = &twin->shared_pens;
+ twin->shared_pens = ami_AllocMinList();
+ twin->globals.shared_pens = twin->shared_pens;
return twin;
}
diff --git a/amiga/utf8.c b/amiga/utf8.c
index 9bf1b1a..91d7c90 100755
--- a/amiga/utf8.c
+++ b/amiga/utf8.c
@@ -23,6 +23,7 @@
#include <proto/diskfont.h>
#include <diskfont/diskfonttag.h>
+#include "utils/nsoption.h"
#include "utils/utf8.h"
#include "desktop/gui_utf8.h"
@@ -37,6 +38,8 @@ nserror utf8_from_local_encoding(const char *string, size_t len, char **result)
charset = GetDiskFontCtrl(DFCTRL_CHARSET);
encname = (const char *) ObtainCharsetInfo(DFCS_NUMBER, charset, DFCS_MIMENAME);
+#else
+ encname = nsoption_charp(local_charset);
#endif
return utf8_from_enc(string,encname,len,result,NULL);
@@ -51,6 +54,8 @@ nserror utf8_to_local_encoding(const char *string, size_t len, char **result)
charset = GetDiskFontCtrl(DFCTRL_CHARSET);
encname = (const char *) ObtainCharsetInfo(DFCS_NUMBER, charset, DFCS_MIMENAME);
+#else
+ encname = nsoption_charp(local_charset);
#endif
return utf8_to_enc(string,encname,len,result);
@@ -96,3 +101,4 @@ static struct gui_utf8_table utf8_table = {
};
struct gui_utf8_table *amiga_utf8_table = &utf8_table;
+
--
NetSurf Browser
7 years, 4 months
netsurf: branch master updated. release/3.3-648-g78dec4d
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/78dec4d5156d738c0d490...
...commit http://git.netsurf-browser.org/netsurf.git/commit/78dec4d5156d738c0d4901e...
...tree http://git.netsurf-browser.org/netsurf.git/tree/78dec4d5156d738c0d4901e67...
The branch, master has been updated
via 78dec4d5156d738c0d4901e6761ab9f406d81834 (commit)
from 2c2dc0f2bc19efde7266edeb98978a22088766ed (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=78dec4d5156d738c0d4...
commit 78dec4d5156d738c0d4901e6761ab9f406d81834
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Show warnings on OS3 with an EasyRequest
diff --git a/amiga/misc.c b/amiga/misc.c
index ea888e0..407aec1 100755
--- a/amiga/misc.c
+++ b/amiga/misc.c
@@ -22,6 +22,10 @@
#include <proto/exec.h>
#include <proto/utility.h>
+#ifndef __amigaos4__
+#include <proto/intuition.h> // for EasyRequest
+#endif
+
#include "utils/corestrings.h"
#include "utils/log.h"
#include "utils/file.h"
@@ -100,7 +104,15 @@ static LONG ami_misc_req(const char *message, uint32 type)
TDR_Window, cur_gw ? cur_gw->shared->win : NULL,
TAG_DONE);
#else
- printf("%s\n", message);
+ struct EasyStruct easyreq = {
+ sizeof(struct EasyStruct),
+ 0,
+ messages_get("NetSurf"),
+ message,
+ messages_get("OK"),
+ };
+
+ ret = EasyRequest(cur_gw ? cur_gw->shared->win : NULL, &easyreq, NULL);
#endif
return ret;
}
-----------------------------------------------------------------------
Summary of changes:
amiga/misc.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/amiga/misc.c b/amiga/misc.c
index ea888e0..407aec1 100755
--- a/amiga/misc.c
+++ b/amiga/misc.c
@@ -22,6 +22,10 @@
#include <proto/exec.h>
#include <proto/utility.h>
+#ifndef __amigaos4__
+#include <proto/intuition.h> // for EasyRequest
+#endif
+
#include "utils/corestrings.h"
#include "utils/log.h"
#include "utils/file.h"
@@ -100,7 +104,15 @@ static LONG ami_misc_req(const char *message, uint32 type)
TDR_Window, cur_gw ? cur_gw->shared->win : NULL,
TAG_DONE);
#else
- printf("%s\n", message);
+ struct EasyStruct easyreq = {
+ sizeof(struct EasyStruct),
+ 0,
+ messages_get("NetSurf"),
+ message,
+ messages_get("OK"),
+ };
+
+ ret = EasyRequest(cur_gw ? cur_gw->shared->win : NULL, &easyreq, NULL);
#endif
return ret;
}
--
NetSurf Browser
7 years, 4 months
netsurf: branch master updated. release/3.3-647-g2c2dc0f
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/2c2dc0f2bc19efde7266e...
...commit http://git.netsurf-browser.org/netsurf.git/commit/2c2dc0f2bc19efde7266ede...
...tree http://git.netsurf-browser.org/netsurf.git/tree/2c2dc0f2bc19efde7266edeb9...
The branch, master has been updated
via 2c2dc0f2bc19efde7266edeb98978a22088766ed (commit)
from a7ab6c7484035b6f5d0b70a96de41dc3eb0c396b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=2c2dc0f2bc19efde726...
commit 2c2dc0f2bc19efde7266edeb98978a22088766ed
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Bring OS3 about requester up on the correct screen
diff --git a/amiga/menu.c b/amiga/menu.c
index f6137e5..1457744 100644
--- a/amiga/menu.c
+++ b/amiga/menu.c
@@ -209,7 +209,7 @@ HOOKF(void, ami_menu_item_project_about, APTR, window, struct IntuiMessage *)
temp2,
};
- sel = EasyRequest(NULL, &about_req, NULL, netsurf_version, verdate);
+ sel = EasyRequest(gwin->win, &about_req, NULL, netsurf_version, verdate);
#endif
free(temp2);
-----------------------------------------------------------------------
Summary of changes:
amiga/menu.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/amiga/menu.c b/amiga/menu.c
index f6137e5..1457744 100644
--- a/amiga/menu.c
+++ b/amiga/menu.c
@@ -209,7 +209,7 @@ HOOKF(void, ami_menu_item_project_about, APTR, window, struct IntuiMessage *)
temp2,
};
- sel = EasyRequest(NULL, &about_req, NULL, netsurf_version, verdate);
+ sel = EasyRequest(gwin->win, &about_req, NULL, netsurf_version, verdate);
#endif
free(temp2);
--
NetSurf Browser
7 years, 4 months
netsurf: branch master updated. release/3.3-646-ga7ab6c7
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/a7ab6c7484035b6f5d0b7...
...commit http://git.netsurf-browser.org/netsurf.git/commit/a7ab6c7484035b6f5d0b70a...
...tree http://git.netsurf-browser.org/netsurf.git/tree/a7ab6c7484035b6f5d0b70a96...
The branch, master has been updated
via a7ab6c7484035b6f5d0b70a96de41dc3eb0c396b (commit)
from 9879cbbfae1ab5135b46336daeac0655af021693 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=a7ab6c7484035b6f5d0...
commit a7ab6c7484035b6f5d0b70a96de41dc3eb0c396b
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Simple "about" requester for OS3
diff --git a/amiga/menu.c b/amiga/menu.c
index 7f7b5b3..f6137e5 100644
--- a/amiga/menu.c
+++ b/amiga/menu.c
@@ -201,10 +201,15 @@ HOOKF(void, ami_menu_item_project_about, APTR, window, struct IntuiMessage *)
TDR_Arg2,verdate,
TAG_DONE);
#else
- /*\todo proper requester for OS3
- * at the moment menus are disabled so won't get here anyway */
- printf("NetSurf %s\nBuild date %s\n", netsurf_version, verdate);
- sel = 0;
+ struct EasyStruct about_req = {
+ sizeof(struct EasyStruct),
+ 0,
+ "NetSurf",
+ "NetSurf %s\nBuild date %s\n\nhttp://www.netsurf-browser.org",
+ temp2,
+ };
+
+ sel = EasyRequest(NULL, &about_req, NULL, netsurf_version, verdate);
#endif
free(temp2);
-----------------------------------------------------------------------
Summary of changes:
amiga/menu.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/amiga/menu.c b/amiga/menu.c
index 7f7b5b3..f6137e5 100644
--- a/amiga/menu.c
+++ b/amiga/menu.c
@@ -201,10 +201,15 @@ HOOKF(void, ami_menu_item_project_about, APTR, window, struct IntuiMessage *)
TDR_Arg2,verdate,
TAG_DONE);
#else
- /*\todo proper requester for OS3
- * at the moment menus are disabled so won't get here anyway */
- printf("NetSurf %s\nBuild date %s\n", netsurf_version, verdate);
- sel = 0;
+ struct EasyStruct about_req = {
+ sizeof(struct EasyStruct),
+ 0,
+ "NetSurf",
+ "NetSurf %s\nBuild date %s\n\nhttp://www.netsurf-browser.org",
+ temp2,
+ };
+
+ sel = EasyRequest(NULL, &about_req, NULL, netsurf_version, verdate);
#endif
free(temp2);
--
NetSurf Browser
7 years, 4 months
netsurf: branch master updated. release/3.3-645-g9879cbb
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/9879cbbfae1ab5135b463...
...commit http://git.netsurf-browser.org/netsurf.git/commit/9879cbbfae1ab5135b46336...
...tree http://git.netsurf-browser.org/netsurf.git/tree/9879cbbfae1ab5135b46336da...
The branch, master has been updated
via 9879cbbfae1ab5135b46336daeac0655af021693 (commit)
via 893df2ccf12b14b74f7fefebf6e635836fde3513 (commit)
via 6eb0bd45799853d039d3e3ca8f61f7d4f428ce67 (commit)
via 1ea29c6aec03e0d6e9325910998e16910170fafa (commit)
via 5c8dccd5f6353524173542762154473f4006383f (commit)
via beb6cebf1e25cd95f7b2e5acbcb35defcf1496b5 (commit)
via 09ac17955ba4e96cef087619eb6b9c61429ea28e (commit)
via 8d71c0ae9e48695b14f24a62d3655f11858bba95 (commit)
from 6847fad65368bab3418eb716af4f9d485dfe30b1 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=9879cbbfae1ab5135b4...
commit 9879cbbfae1ab5135b46336daeac0655af021693
Merge: 6847fad 893df2c
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Merge branch 'chris/fix-palmap-crash'
Fixes a problem with OS4 freezing up when running NetSurf on a palette mapped screen.
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=893df2ccf12b14b74f7...
commit 893df2ccf12b14b74f7fefebf6e635836fde3513
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Revert "Plot local history background white instead of wholly transparent"
On second thoughts this was correct initially.
This reverts commit 1ea29c6aec03e0d6e9325910998e16910170fafa.
diff --git a/amiga/history_local.c b/amiga/history_local.c
index e2d1b35..f11c784 100755
--- a/amiga/history_local.c
+++ b/amiga/history_local.c
@@ -82,7 +82,7 @@ static void ami_history_redraw(struct history_window *hw)
glob = &hw->gg;
- SetRPAttrs(glob->rp, RPTAG_APenColor, 0x00ffffff, TAG_DONE);
+ SetRPAttrs(glob->rp, RPTAG_APenColor, 0xffffffff, TAG_DONE);
RectFill(glob->rp, 0, 0, bbox->Width - 1, bbox->Height - 1);
browser_window_history_redraw_rectangle(hw->gw->bw, xs, ys,
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=6eb0bd45799853d039d...
commit 6eb0bd45799853d039d3e3ca8f61f7d4f428ce67
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Remove unneeded pen list
diff --git a/amiga/bitmap.c b/amiga/bitmap.c
index c57fb8f..b98d95f 100644
--- a/amiga/bitmap.c
+++ b/amiga/bitmap.c
@@ -558,8 +558,6 @@ struct BitMap *ami_bitmap_get_native(struct bitmap *bitmap,
static nserror bitmap_render(struct bitmap *bitmap, hlcache_handle *content)
{
-// if(ami_plot_screen_is_palettemapped() == true) return NSERROR_OK;
-
struct redraw_context ctx = {
.interactive = false,
.background_images = true,
@@ -570,14 +568,13 @@ static nserror bitmap_render(struct bitmap *bitmap, hlcache_handle *content)
int plot_height;
struct gui_globals bm_globals;
struct gui_globals *temp_gg = glob;
-// struct MinList *shared_pens = ami_AllocMinList();
plot_width = MIN(content_get_width(content), bitmap->width);
plot_height = ((plot_width * bitmap->height) + (bitmap->width / 2)) /
bitmap->width;
ami_init_layers(&bm_globals, bitmap->width, bitmap->height, true);
-// bm_globals.shared_pens = shared_pens;
+ bm_globals.shared_pens = NULL;
glob = &bm_globals;
ami_clearclipreg(&bm_globals);
@@ -600,15 +597,13 @@ static nserror bitmap_render(struct bitmap *bitmap, hlcache_handle *content)
ami_bitmap_argb_to_rgba(bitmap);
#else
-#warning FIXME for OS3
+#warning FIXME for OS3 (in current state none of bitmap_render can work!)
#endif
/**\todo In theory we should be able to move the bitmap to our native area
to try to avoid re-conversion (at the expense of memory) */
ami_free_layers(&bm_globals);
-// ami_plot_release_pens(shared_pens);
-// FreeVec(shared_pens);
amiga_bitmap_set_opaque(bitmap, true);
/* Restore previous render area. This is set when plotting starts,
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=1ea29c6aec03e0d6e93...
commit 1ea29c6aec03e0d6e9325910998e16910170fafa
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Plot local history background white instead of wholly transparent
diff --git a/amiga/history_local.c b/amiga/history_local.c
index f11c784..e2d1b35 100755
--- a/amiga/history_local.c
+++ b/amiga/history_local.c
@@ -82,7 +82,7 @@ static void ami_history_redraw(struct history_window *hw)
glob = &hw->gg;
- SetRPAttrs(glob->rp, RPTAG_APenColor, 0xffffffff, TAG_DONE);
+ SetRPAttrs(glob->rp, RPTAG_APenColor, 0x00ffffff, TAG_DONE);
RectFill(glob->rp, 0, 0, bbox->Width - 1, bbox->Height - 1);
browser_window_history_redraw_rectangle(hw->gw->bw, xs, ys,
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=5c8dccd5f6353524173...
commit 5c8dccd5f6353524173542762154473f4006383f
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
When forcing 32-bit render mode, don't create the BitMaps as friends of the screen BitMap.
This fixes a system freeze on OS4
diff --git a/amiga/bitmap.h b/amiga/bitmap.h
index 20e6315..aba3597 100755
--- a/amiga/bitmap.h
+++ b/amiga/bitmap.h
@@ -35,6 +35,7 @@ struct bitmap {
int height;
UBYTE *pixdata;
bool opaque;
+ int native;
struct BitMap *nativebm;
int nativebmwidth;
int nativebmheight;
diff --git a/amiga/plotters.c b/amiga/plotters.c
index bb69dce..c6c546b 100644
--- a/amiga/plotters.c
+++ b/amiga/plotters.c
@@ -142,7 +142,7 @@ void ami_init_layers(struct gui_globals *gg, ULONG width, ULONG height, bool for
} else {
/* Force friend BitMaps on for obvious RTG screens under OS3.
* If we get a bit smarter about this we can lose the user option. */
- if(depth >= 16) friend = scrn->RastPort.BitMap;
+ if((depth >= 16) && (force32bit == false)) friend = scrn->RastPort.BitMap;
}
#endif
@@ -154,7 +154,7 @@ void ami_init_layers(struct gui_globals *gg, ULONG width, ULONG height, bool for
* We get freezes and other problems on OS4 if we befriend at any
* other depths, hence this check.
*/
- if(depth >= 24) friend = scrn->RastPort.BitMap;
+ if((depth >= 24) && (force32bit == false)) friend = scrn->RastPort.BitMap;
#endif
gg->bm = ami_rtg_allocbitmap(width, height, 32, 0, friend, RGBFB_A8R8G8B8);
}
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=beb6cebf1e25cd95f7b...
commit beb6cebf1e25cd95f7b2e5acbcb35defcf1496b5
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
conflict
diff --git a/amiga/bitmap.c b/amiga/bitmap.c
index 73cb4e3..c57fb8f 100644
--- a/amiga/bitmap.c
+++ b/amiga/bitmap.c
@@ -558,11 +558,7 @@ struct BitMap *ami_bitmap_get_native(struct bitmap *bitmap,
static nserror bitmap_render(struct bitmap *bitmap, hlcache_handle *content)
{
-<<<<<<< HEAD
// if(ami_plot_screen_is_palettemapped() == true) return NSERROR_OK;
-=======
- if(ami_plot_screen_is_palettemapped() == true) return NSERROR_OK;
->>>>>>> 6847fad65368bab3418eb716af4f9d485dfe30b1
struct redraw_context ctx = {
.interactive = false,
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=09ac17955ba4e96cef0...
commit 09ac17955ba4e96cef087619eb6b9c61429ea28e
Merge: 8d71c0a 6847fad
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Merge branch 'master' of git://git.netsurf-browser.org/netsurf into chris/fix-palmap-crash
Conflicts:
amiga/bitmap.c
diff --cc amiga/bitmap.c
index c57fb8f,dd6a91b..73cb4e3
--- a/amiga/bitmap.c
+++ b/amiga/bitmap.c
@@@ -558,7 -534,7 +558,11 @@@ struct BitMap *ami_bitmap_get_native(st
static nserror bitmap_render(struct bitmap *bitmap, hlcache_handle *content)
{
++<<<<<<< HEAD
+// if(ami_plot_screen_is_palettemapped() == true) return NSERROR_OK;
++=======
+ if(ami_plot_screen_is_palettemapped() == true) return NSERROR_OK;
++>>>>>>> 6847fad65368bab3418eb716af4f9d485dfe30b1
struct redraw_context ctx = {
.interactive = false,
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=8d71c0ae9e48695b14f...
commit 8d71c0ae9e48695b14f24a62d3655f11858bba95
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
track type of native bitmap
diff --git a/amiga/bitmap.c b/amiga/bitmap.c
index ae9479d..c57fb8f 100644
--- a/amiga/bitmap.c
+++ b/amiga/bitmap.c
@@ -46,6 +46,13 @@
#include "amiga/misc.h"
#include "amiga/rtg.h"
+enum {
+ AMI_NSBM_NONE = 0,
+ AMI_NSBM_TRUECOLOUR,
+ AMI_NSBM_PALETTEMAPPED
+};
+
+
/* exported function documented in amiga/bitmap.h */
void *amiga_bitmap_create(int width, int height, unsigned int state)
{
@@ -69,6 +76,7 @@ void *amiga_bitmap_create(int width, int height, unsigned int state)
bitmap->url = NULL;
bitmap->title = NULL;
bitmap->icondata = NULL;
+ bitmap->native = AMI_NSBM_NONE;
return bitmap;
}
@@ -163,6 +171,7 @@ void amiga_bitmap_modified(void *bitmap)
bm->nativebm = NULL;
bm->dto = NULL;
bm->native_mask = NULL;
+ bm->native = AMI_NSBM_NONE;
}
@@ -353,6 +362,10 @@ static inline struct BitMap *ami_bitmap_get_truecolour(struct bitmap *bitmap,int
if(!bitmap) return NULL;
+ if((bitmap->native != AMI_NSBM_NONE) && (bitmap->native != AMI_NSBM_TRUECOLOUR)) {
+ amiga_bitmap_modified(bitmap);
+ }
+
if(bitmap->nativebm)
{
if((bitmap->nativebmwidth == width) && (bitmap->nativebmheight==height))
@@ -384,6 +397,7 @@ static inline struct BitMap *ami_bitmap_get_truecolour(struct bitmap *bitmap,int
bitmap->nativebm = tbm;
bitmap->nativebmwidth = bitmap->width;
bitmap->nativebmheight = bitmap->height;
+ bitmap->native = AMI_NSBM_TRUECOLOUR;
}
}
@@ -436,12 +450,14 @@ static inline struct BitMap *ami_bitmap_get_truecolour(struct bitmap *bitmap,int
ami_rtg_freebitmap(tbm);
tbm = scaledbm;
bitmap->nativebm = NULL;
+ bitmap->native = AMI_NSBM_NONE;
if(nsoption_int(cache_bitmaps) >= 1)
{
bitmap->nativebm = tbm;
bitmap->nativebmwidth = width;
bitmap->nativebmheight = height;
+ bitmap->native = AMI_NSBM_TRUECOLOUR;
}
}
@@ -482,7 +498,11 @@ static inline struct BitMap *ami_bitmap_get_palettemapped(struct bitmap *bitmap,
int width, int height)
{
struct BitMap *dtbm;
-
+
+ if((bitmap->native != AMI_NSBM_NONE) && (bitmap->native != AMI_NSBM_PALETTEMAPPED)) {
+ amiga_bitmap_modified(bitmap);
+ }
+
/* Dispose the DataTypes object if we've performed a layout already,
and we need to scale, as scaling can only be performed before
the first GM_LAYOUT */
@@ -519,6 +539,10 @@ static inline struct BitMap *ami_bitmap_get_palettemapped(struct bitmap *bitmap,
bitmap->nativebmwidth = width;
bitmap->nativebmheight = height;
+ /**\todo Native bitmaps are stored as DataTypes Objects here?
+ This is sub-optimal and they should be cached as BitMaps according to user
+ preferences */
+ bitmap->native = AMI_NSBM_PALETTEMAPPED;
return dtbm;
}
@@ -534,11 +558,7 @@ struct BitMap *ami_bitmap_get_native(struct bitmap *bitmap,
static nserror bitmap_render(struct bitmap *bitmap, hlcache_handle *content)
{
- int plot_width;
- int plot_height;
- struct MinList shared_pens;
- struct gui_globals bm_globals;
- struct gui_globals *temp_gg = glob;
+// if(ami_plot_screen_is_palettemapped() == true) return NSERROR_OK;
struct redraw_context ctx = {
.interactive = false,
@@ -546,13 +566,18 @@ static nserror bitmap_render(struct bitmap *bitmap, hlcache_handle *content)
.plot = &amiplot
};
+ int plot_width;
+ int plot_height;
+ struct gui_globals bm_globals;
+ struct gui_globals *temp_gg = glob;
+// struct MinList *shared_pens = ami_AllocMinList();
+
plot_width = MIN(content_get_width(content), bitmap->width);
plot_height = ((plot_width * bitmap->height) + (bitmap->width / 2)) /
bitmap->width;
- ami_init_layers(&bm_globals, bitmap->width, bitmap->height);
- ami_NewMinList(&shared_pens);
- bm_globals.shared_pens = &shared_pens;
+ ami_init_layers(&bm_globals, bitmap->width, bitmap->height, true);
+// bm_globals.shared_pens = shared_pens;
glob = &bm_globals;
ami_clearclipreg(&bm_globals);
@@ -582,7 +607,8 @@ static nserror bitmap_render(struct bitmap *bitmap, hlcache_handle *content)
to try to avoid re-conversion (at the expense of memory) */
ami_free_layers(&bm_globals);
- ami_plot_release_pens(&shared_pens);
+// ami_plot_release_pens(shared_pens);
+// FreeVec(shared_pens);
amiga_bitmap_set_opaque(bitmap, true);
/* Restore previous render area. This is set when plotting starts,
-----------------------------------------------------------------------
Summary of changes:
amiga/bitmap.c | 35 +++++++++++++++++++++++++++--------
amiga/bitmap.h | 1 +
amiga/plotters.c | 4 ++--
3 files changed, 30 insertions(+), 10 deletions(-)
diff --git a/amiga/bitmap.c b/amiga/bitmap.c
index dd6a91b..b98d95f 100644
--- a/amiga/bitmap.c
+++ b/amiga/bitmap.c
@@ -46,6 +46,13 @@
#include "amiga/misc.h"
#include "amiga/rtg.h"
+enum {
+ AMI_NSBM_NONE = 0,
+ AMI_NSBM_TRUECOLOUR,
+ AMI_NSBM_PALETTEMAPPED
+};
+
+
/* exported function documented in amiga/bitmap.h */
void *amiga_bitmap_create(int width, int height, unsigned int state)
{
@@ -69,6 +76,7 @@ void *amiga_bitmap_create(int width, int height, unsigned int state)
bitmap->url = NULL;
bitmap->title = NULL;
bitmap->icondata = NULL;
+ bitmap->native = AMI_NSBM_NONE;
return bitmap;
}
@@ -163,6 +171,7 @@ void amiga_bitmap_modified(void *bitmap)
bm->nativebm = NULL;
bm->dto = NULL;
bm->native_mask = NULL;
+ bm->native = AMI_NSBM_NONE;
}
@@ -353,6 +362,10 @@ static inline struct BitMap *ami_bitmap_get_truecolour(struct bitmap *bitmap,int
if(!bitmap) return NULL;
+ if((bitmap->native != AMI_NSBM_NONE) && (bitmap->native != AMI_NSBM_TRUECOLOUR)) {
+ amiga_bitmap_modified(bitmap);
+ }
+
if(bitmap->nativebm)
{
if((bitmap->nativebmwidth == width) && (bitmap->nativebmheight==height))
@@ -384,6 +397,7 @@ static inline struct BitMap *ami_bitmap_get_truecolour(struct bitmap *bitmap,int
bitmap->nativebm = tbm;
bitmap->nativebmwidth = bitmap->width;
bitmap->nativebmheight = bitmap->height;
+ bitmap->native = AMI_NSBM_TRUECOLOUR;
}
}
@@ -436,12 +450,14 @@ static inline struct BitMap *ami_bitmap_get_truecolour(struct bitmap *bitmap,int
ami_rtg_freebitmap(tbm);
tbm = scaledbm;
bitmap->nativebm = NULL;
+ bitmap->native = AMI_NSBM_NONE;
if(nsoption_int(cache_bitmaps) >= 1)
{
bitmap->nativebm = tbm;
bitmap->nativebmwidth = width;
bitmap->nativebmheight = height;
+ bitmap->native = AMI_NSBM_TRUECOLOUR;
}
}
@@ -482,7 +498,11 @@ static inline struct BitMap *ami_bitmap_get_palettemapped(struct bitmap *bitmap,
int width, int height)
{
struct BitMap *dtbm;
-
+
+ if((bitmap->native != AMI_NSBM_NONE) && (bitmap->native != AMI_NSBM_PALETTEMAPPED)) {
+ amiga_bitmap_modified(bitmap);
+ }
+
/* Dispose the DataTypes object if we've performed a layout already,
and we need to scale, as scaling can only be performed before
the first GM_LAYOUT */
@@ -519,6 +539,10 @@ static inline struct BitMap *ami_bitmap_get_palettemapped(struct bitmap *bitmap,
bitmap->nativebmwidth = width;
bitmap->nativebmheight = height;
+ /**\todo Native bitmaps are stored as DataTypes Objects here?
+ This is sub-optimal and they should be cached as BitMaps according to user
+ preferences */
+ bitmap->native = AMI_NSBM_PALETTEMAPPED;
return dtbm;
}
@@ -534,8 +558,6 @@ struct BitMap *ami_bitmap_get_native(struct bitmap *bitmap,
static nserror bitmap_render(struct bitmap *bitmap, hlcache_handle *content)
{
- if(ami_plot_screen_is_palettemapped() == true) return NSERROR_OK;
-
struct redraw_context ctx = {
.interactive = false,
.background_images = true,
@@ -546,14 +568,13 @@ static nserror bitmap_render(struct bitmap *bitmap, hlcache_handle *content)
int plot_height;
struct gui_globals bm_globals;
struct gui_globals *temp_gg = glob;
-// struct MinList *shared_pens = ami_AllocMinList();
plot_width = MIN(content_get_width(content), bitmap->width);
plot_height = ((plot_width * bitmap->height) + (bitmap->width / 2)) /
bitmap->width;
ami_init_layers(&bm_globals, bitmap->width, bitmap->height, true);
-// bm_globals.shared_pens = shared_pens;
+ bm_globals.shared_pens = NULL;
glob = &bm_globals;
ami_clearclipreg(&bm_globals);
@@ -576,15 +597,13 @@ static nserror bitmap_render(struct bitmap *bitmap, hlcache_handle *content)
ami_bitmap_argb_to_rgba(bitmap);
#else
-#warning FIXME for OS3
+#warning FIXME for OS3 (in current state none of bitmap_render can work!)
#endif
/**\todo In theory we should be able to move the bitmap to our native area
to try to avoid re-conversion (at the expense of memory) */
ami_free_layers(&bm_globals);
-// ami_plot_release_pens(shared_pens);
-// FreeVec(shared_pens);
amiga_bitmap_set_opaque(bitmap, true);
/* Restore previous render area. This is set when plotting starts,
diff --git a/amiga/bitmap.h b/amiga/bitmap.h
index 20e6315..aba3597 100755
--- a/amiga/bitmap.h
+++ b/amiga/bitmap.h
@@ -35,6 +35,7 @@ struct bitmap {
int height;
UBYTE *pixdata;
bool opaque;
+ int native;
struct BitMap *nativebm;
int nativebmwidth;
int nativebmheight;
diff --git a/amiga/plotters.c b/amiga/plotters.c
index bb69dce..c6c546b 100644
--- a/amiga/plotters.c
+++ b/amiga/plotters.c
@@ -142,7 +142,7 @@ void ami_init_layers(struct gui_globals *gg, ULONG width, ULONG height, bool for
} else {
/* Force friend BitMaps on for obvious RTG screens under OS3.
* If we get a bit smarter about this we can lose the user option. */
- if(depth >= 16) friend = scrn->RastPort.BitMap;
+ if((depth >= 16) && (force32bit == false)) friend = scrn->RastPort.BitMap;
}
#endif
@@ -154,7 +154,7 @@ void ami_init_layers(struct gui_globals *gg, ULONG width, ULONG height, bool for
* We get freezes and other problems on OS4 if we befriend at any
* other depths, hence this check.
*/
- if(depth >= 24) friend = scrn->RastPort.BitMap;
+ if((depth >= 24) && (force32bit == false)) friend = scrn->RastPort.BitMap;
#endif
gg->bm = ami_rtg_allocbitmap(width, height, 32, 0, friend, RGBFB_A8R8G8B8);
}
--
NetSurf Browser
7 years, 4 months
netsurf: branch master updated. release/3.3-637-g6847fad
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/6847fad65368bab3418eb...
...commit http://git.netsurf-browser.org/netsurf.git/commit/6847fad65368bab3418eb71...
...tree http://git.netsurf-browser.org/netsurf.git/tree/6847fad65368bab3418eb716a...
The branch, master has been updated
via 6847fad65368bab3418eb716af4f9d485dfe30b1 (commit)
from 6d63f7959af64a45b0643d0610fcbdb0c07bfbc4 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=6847fad65368bab3418...
commit 6847fad65368bab3418eb716af4f9d485dfe30b1
Author: Vincent Sanders <vince(a)kyllikki.org>
Commit: Vincent Sanders <vince(a)kyllikki.org>
remove javascript build option from jenkins script
diff --git a/utils/jenkins-build.sh b/utils/jenkins-build.sh
index e34d26c..f85ae4b 100755
--- a/utils/jenkins-build.sh
+++ b/utils/jenkins-build.sh
@@ -30,7 +30,6 @@
# TARGET is set to the frontend target to build
# HOST is set to the identifier of the toolchain doing the building
# CC is the compiler (gcc or clang)
-# BUILD_JS is the javascript type (json or jsoff)
# BUILD_NUMBER is the CI build number
#####
@@ -346,36 +345,29 @@ if [ "${CC}" = "clang" ];then
fi
# convert javascript parameters
-if [ "${BUILD_JS}" = "json" ];then
- case ${HOST} in
- "arm-unknown-riscos")
- BUILD_MOZJS=NO
- BUILD_JS=NO
- #BUILD_JS=YES
- BUILD_DUKTAPE=YES
- ;;
-
- "amd64-unknown-openbsd5.4")
- BUILD_MOZJS=NO
- BUILD_JS=NO
- #BUILD_JS=YES
- BUILD_DUKTAPE=YES
- ;;
-
- *)
- #BUILD_MOZJS=YES
- BUILD_MOZJS=NO
- BUILD_JS=NO
- BUILD_DUKTAPE=YES
+case ${HOST} in
+ "arm-unknown-riscos")
+ BUILD_MOZJS=NO
+ BUILD_JS=NO
+ #BUILD_JS=YES
+ BUILD_DUKTAPE=YES
;;
- esac
+ "amd64-unknown-openbsd5.4")
+ BUILD_MOZJS=NO
+ BUILD_JS=NO
+ #BUILD_JS=YES
+ BUILD_DUKTAPE=YES
+ ;;
-else
- BUILD_JS=NO
- BUILD_MOZJS=NO
- BUILD_DUKTAPE=NO
-fi
+ *)
+ #BUILD_MOZJS=YES
+ BUILD_MOZJS=NO
+ BUILD_JS=NO
+ BUILD_DUKTAPE=YES
+ ;;
+
+esac
########### Use distcc if present ######
-----------------------------------------------------------------------
Summary of changes:
utils/jenkins-build.sh | 48 ++++++++++++++++++++----------------------------
1 file changed, 20 insertions(+), 28 deletions(-)
diff --git a/utils/jenkins-build.sh b/utils/jenkins-build.sh
index e34d26c..f85ae4b 100755
--- a/utils/jenkins-build.sh
+++ b/utils/jenkins-build.sh
@@ -30,7 +30,6 @@
# TARGET is set to the frontend target to build
# HOST is set to the identifier of the toolchain doing the building
# CC is the compiler (gcc or clang)
-# BUILD_JS is the javascript type (json or jsoff)
# BUILD_NUMBER is the CI build number
#####
@@ -346,36 +345,29 @@ if [ "${CC}" = "clang" ];then
fi
# convert javascript parameters
-if [ "${BUILD_JS}" = "json" ];then
- case ${HOST} in
- "arm-unknown-riscos")
- BUILD_MOZJS=NO
- BUILD_JS=NO
- #BUILD_JS=YES
- BUILD_DUKTAPE=YES
- ;;
-
- "amd64-unknown-openbsd5.4")
- BUILD_MOZJS=NO
- BUILD_JS=NO
- #BUILD_JS=YES
- BUILD_DUKTAPE=YES
- ;;
-
- *)
- #BUILD_MOZJS=YES
- BUILD_MOZJS=NO
- BUILD_JS=NO
- BUILD_DUKTAPE=YES
+case ${HOST} in
+ "arm-unknown-riscos")
+ BUILD_MOZJS=NO
+ BUILD_JS=NO
+ #BUILD_JS=YES
+ BUILD_DUKTAPE=YES
;;
- esac
+ "amd64-unknown-openbsd5.4")
+ BUILD_MOZJS=NO
+ BUILD_JS=NO
+ #BUILD_JS=YES
+ BUILD_DUKTAPE=YES
+ ;;
-else
- BUILD_JS=NO
- BUILD_MOZJS=NO
- BUILD_DUKTAPE=NO
-fi
+ *)
+ #BUILD_MOZJS=YES
+ BUILD_MOZJS=NO
+ BUILD_JS=NO
+ BUILD_DUKTAPE=YES
+ ;;
+
+esac
########### Use distcc if present ######
--
NetSurf Browser
7 years, 4 months
netsurf: branch master updated. release/3.3-636-g6d63f79
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/6d63f7959af64a45b0643...
...commit http://git.netsurf-browser.org/netsurf.git/commit/6d63f7959af64a45b0643d0...
...tree http://git.netsurf-browser.org/netsurf.git/tree/6d63f7959af64a45b0643d061...
The branch, master has been updated
via 6d63f7959af64a45b0643d0610fcbdb0c07bfbc4 (commit)
via 822493af0d301fbfe05bae11b9ae12914171057f (commit)
from 9e1622a679031d2bb2205ba42e23269600bc9a3a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=6d63f7959af64a45b06...
commit 6d63f7959af64a45b0643d0610fcbdb0c07bfbc4
Author: Vincent Sanders <vince(a)kyllikki.org>
Commit: Vincent Sanders <vince(a)kyllikki.org>
make declarations match definitions for duk_raw_read_xxx_be
diff --git a/javascript/duktape/duktape.c b/javascript/duktape/duktape.c
index 105bdbe..a215d13 100644
--- a/javascript/duktape/duktape.c
+++ b/javascript/duktape/duktape.c
@@ -4926,12 +4926,12 @@ DUK_INTERNAL_DECL duk_uint8_t *duk_bw_insert_ensure_area(duk_hthread *thr, duk_b
DUK_INTERNAL_DECL void duk_bw_remove_raw_slice(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t off, duk_size_t len);
/* No duk_bw_remove_ensure_slice(), functionality would be identical. */
-DUK_INTERNAL_DECL duk_uint16_t duk_raw_read_u16_be(duk_uint8_t **p);
-DUK_INTERNAL_DECL duk_uint32_t duk_raw_read_u32_be(duk_uint8_t **p);
-DUK_INTERNAL_DECL duk_double_t duk_raw_read_double_be(duk_uint8_t **p);
-DUK_INTERNAL_DECL void duk_raw_write_u16_be(duk_uint8_t **p, duk_uint16_t val);
-DUK_INTERNAL_DECL void duk_raw_write_u32_be(duk_uint8_t **p, duk_uint32_t val);
-DUK_INTERNAL_DECL void duk_raw_write_double_be(duk_uint8_t **p, duk_double_t val);
+DUK_INTERNAL_DECL DUK_INLINE duk_uint16_t duk_raw_read_u16_be(duk_uint8_t **p);
+DUK_INTERNAL_DECL DUK_INLINE duk_uint32_t duk_raw_read_u32_be(duk_uint8_t **p);
+DUK_INTERNAL_DECL DUK_INLINE duk_double_t duk_raw_read_double_be(duk_uint8_t **p);
+DUK_INTERNAL_DECL DUK_INLINE void duk_raw_write_u16_be(duk_uint8_t **p, duk_uint16_t val);
+DUK_INTERNAL_DECL DUK_INLINE void duk_raw_write_u32_be(duk_uint8_t **p, duk_uint32_t val);
+DUK_INTERNAL_DECL DUK_INLINE void duk_raw_write_double_be(duk_uint8_t **p, duk_double_t val);
#if defined(DUK_USE_DEBUGGER_SUPPORT) /* For now only needed by the debugger. */
DUK_INTERNAL void duk_byteswap_bytes(duk_uint8_t *p, duk_small_uint_t len);
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=822493af0d301fbfe05...
commit 822493af0d301fbfe05bae11b9ae12914171057f
Author: Vincent Sanders <vince(a)kyllikki.org>
Commit: Vincent Sanders <vince(a)kyllikki.org>
fixup some empty logging calls in atari hotlist code
diff --git a/atari/hotlist.c b/atari/hotlist.c
index 2654911..380e1b6 100644
--- a/atari/hotlist.c
+++ b/atari/hotlist.c
@@ -72,13 +72,13 @@ static struct atari_treeview_callbacks atari_hotlist_treeview_callbacks = {
static nserror atari_hotlist_init_phase2(struct core_window *cw,
struct core_window_callback_table *cb_t)
{
- LOG("");
+ LOG("cw:%p", cw);
return(hotlist_init(cb_t, cw, hl.path));
}
static void atari_hotlist_finish(struct core_window *cw)
{
- LOG("");
+ LOG("cw:%p", cw);
hotlist_fini(hl.path);
}
@@ -123,7 +123,7 @@ static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
GRECT tb_area;
GUIWIN * gemtk_win;
- LOG("");
+ LOG("gw:%p", win);
tv = (struct atari_treeview_window*) gemtk_wm_get_user_data(win);
cw = (struct core_window *)tv;
-----------------------------------------------------------------------
Summary of changes:
atari/hotlist.c | 6 +++---
javascript/duktape/duktape.c | 12 ++++++------
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/atari/hotlist.c b/atari/hotlist.c
index 2654911..380e1b6 100644
--- a/atari/hotlist.c
+++ b/atari/hotlist.c
@@ -72,13 +72,13 @@ static struct atari_treeview_callbacks atari_hotlist_treeview_callbacks = {
static nserror atari_hotlist_init_phase2(struct core_window *cw,
struct core_window_callback_table *cb_t)
{
- LOG("");
+ LOG("cw:%p", cw);
return(hotlist_init(cb_t, cw, hl.path));
}
static void atari_hotlist_finish(struct core_window *cw)
{
- LOG("");
+ LOG("cw:%p", cw);
hotlist_fini(hl.path);
}
@@ -123,7 +123,7 @@ static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
GRECT tb_area;
GUIWIN * gemtk_win;
- LOG("");
+ LOG("gw:%p", win);
tv = (struct atari_treeview_window*) gemtk_wm_get_user_data(win);
cw = (struct core_window *)tv;
diff --git a/javascript/duktape/duktape.c b/javascript/duktape/duktape.c
index 105bdbe..a215d13 100644
--- a/javascript/duktape/duktape.c
+++ b/javascript/duktape/duktape.c
@@ -4926,12 +4926,12 @@ DUK_INTERNAL_DECL duk_uint8_t *duk_bw_insert_ensure_area(duk_hthread *thr, duk_b
DUK_INTERNAL_DECL void duk_bw_remove_raw_slice(duk_hthread *thr, duk_bufwriter_ctx *bw, duk_size_t off, duk_size_t len);
/* No duk_bw_remove_ensure_slice(), functionality would be identical. */
-DUK_INTERNAL_DECL duk_uint16_t duk_raw_read_u16_be(duk_uint8_t **p);
-DUK_INTERNAL_DECL duk_uint32_t duk_raw_read_u32_be(duk_uint8_t **p);
-DUK_INTERNAL_DECL duk_double_t duk_raw_read_double_be(duk_uint8_t **p);
-DUK_INTERNAL_DECL void duk_raw_write_u16_be(duk_uint8_t **p, duk_uint16_t val);
-DUK_INTERNAL_DECL void duk_raw_write_u32_be(duk_uint8_t **p, duk_uint32_t val);
-DUK_INTERNAL_DECL void duk_raw_write_double_be(duk_uint8_t **p, duk_double_t val);
+DUK_INTERNAL_DECL DUK_INLINE duk_uint16_t duk_raw_read_u16_be(duk_uint8_t **p);
+DUK_INTERNAL_DECL DUK_INLINE duk_uint32_t duk_raw_read_u32_be(duk_uint8_t **p);
+DUK_INTERNAL_DECL DUK_INLINE duk_double_t duk_raw_read_double_be(duk_uint8_t **p);
+DUK_INTERNAL_DECL DUK_INLINE void duk_raw_write_u16_be(duk_uint8_t **p, duk_uint16_t val);
+DUK_INTERNAL_DECL DUK_INLINE void duk_raw_write_u32_be(duk_uint8_t **p, duk_uint32_t val);
+DUK_INTERNAL_DECL DUK_INLINE void duk_raw_write_double_be(duk_uint8_t **p, duk_double_t val);
#if defined(DUK_USE_DEBUGGER_SUPPORT) /* For now only needed by the debugger. */
DUK_INTERNAL void duk_byteswap_bytes(duk_uint8_t *p, duk_small_uint_t len);
--
NetSurf Browser
7 years, 4 months