From 2ad24f39da6a314a1e3839c355103a6af131bc09 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sun, 22 Jul 2012 15:48:55 +0100 Subject: Interned string cleanup, phase 2: Create utils/corestrings and use it in css handler. --- Makefile.sources | 9 +- css/css.c | 246 ------------------------------------------- css/internal.h | 67 ------------ css/select.c | 298 ++++++++++++++++++++++++++-------------------------- desktop/netsurf.c | 7 ++ utils/corestrings.c | 293 +++++++++++++++++++++++++++++++++++++++++++++++++++ utils/corestrings.h | 101 ++++++++++++++++++ 7 files changed, 556 insertions(+), 465 deletions(-) create mode 100644 utils/corestrings.c create mode 100644 utils/corestrings.h diff --git a/Makefile.sources b/Makefile.sources index 608381934..95695f786 100644 --- a/Makefile.sources +++ b/Makefile.sources @@ -13,12 +13,13 @@ S_CSS := css.c dump.c internal.c select.c utils.c S_RENDER := box.c box_construct.c box_normalise.c \ font.c form.c \ - html.c html_script.c html_interaction.c html_redraw.c html_forms.c \ - imagemap.c layout.c list.c search.c table.c \ + html.c html_script.c html_interaction.c html_redraw.c \ + html_forms.c imagemap.c layout.c list.c search.c table.c \ textinput.c textplain.c -S_UTILS := base64.c filename.c hashtable.c locale.c messages.c nsurl.c \ - talloc.c url.c utf8.c utils.c useragent.c filepath.c log.c +S_UTILS := base64.c corestrings.c filename.c hashtable.c locale.c \ + messages.c nsurl.c talloc.c url.c utf8.c utils.c useragent.c \ + filepath.c log.c S_HTTP := challenge.c generics.c primitives.c parameter.c \ content-disposition.c content-type.c www-authenticate.c diff --git a/css/css.c b/css/css.c index 549e79fae..3f660097f 100644 --- a/css/css.c +++ b/css/css.c @@ -83,71 +83,6 @@ static css_error nscss_register_import(struct content_css_data *c, static lwc_string *css_charset; static css_stylesheet *blank_import; -lwc_string *nscss_lwc_string_a; -lwc_string *nscss_lwc_string_abscenter; -lwc_string *nscss_lwc_string_absmiddle; -lwc_string *nscss_lwc_string_align; -lwc_string *nscss_lwc_string_applet; -lwc_string *nscss_lwc_string_baseline; -lwc_string *nscss_lwc_string_body; -lwc_string *nscss_lwc_string_bottom; -lwc_string *nscss_lwc_string_caption; -lwc_string *nscss_lwc_string_center; -lwc_string *nscss_lwc_string_col; -lwc_string *nscss_lwc_string_div; -lwc_string *nscss_lwc_string_embed; -lwc_string *nscss_lwc_string_font; -lwc_string *nscss_lwc_string_h1; -lwc_string *nscss_lwc_string_h2; -lwc_string *nscss_lwc_string_h3; -lwc_string *nscss_lwc_string_h4; -lwc_string *nscss_lwc_string_h5; -lwc_string *nscss_lwc_string_h6; -lwc_string *nscss_lwc_string_hr; -lwc_string *nscss_lwc_string_iframe; -lwc_string *nscss_lwc_string_img; -lwc_string *nscss_lwc_string_input; -lwc_string *nscss_lwc_string_justify; -lwc_string *nscss_lwc_string_left; -lwc_string *nscss_lwc_string_middle; -lwc_string *nscss_lwc_string_object; -lwc_string *nscss_lwc_string_p; -lwc_string *nscss_lwc_string_password; -lwc_string *nscss_lwc_string_right; -lwc_string *nscss_lwc_string_table; -lwc_string *nscss_lwc_string_tbody; -lwc_string *nscss_lwc_string_td; -lwc_string *nscss_lwc_string_text; -lwc_string *nscss_lwc_string_textarea; -lwc_string *nscss_lwc_string_texttop; -lwc_string *nscss_lwc_string_tfoot; -lwc_string *nscss_lwc_string_th; -lwc_string *nscss_lwc_string_thead; -lwc_string *nscss_lwc_string_top; -lwc_string *nscss_lwc_string_tr; - -dom_string *nscss_dom_string_align; -dom_string *nscss_dom_string_background; -dom_string *nscss_dom_string_bgcolor; -dom_string *nscss_dom_string_border; -dom_string *nscss_dom_string_bordercolor; -dom_string *nscss_dom_string_cellpadding; -dom_string *nscss_dom_string_cellspacing; -dom_string *nscss_dom_string_color; -dom_string *nscss_dom_string_cols; -dom_string *nscss_dom_string_height; -dom_string *nscss_dom_string_href; -dom_string *nscss_dom_string_hspace; -dom_string *nscss_dom_string_link; -dom_string *nscss_dom_string_rows; -dom_string *nscss_dom_string_size; -dom_string *nscss_dom_string_text; -dom_string *nscss_dom_string_type; -dom_string *nscss_dom_string_valign; -dom_string *nscss_dom_string_vlink; -dom_string *nscss_dom_string_vspace; -dom_string *nscss_dom_string_width; - /** * Initialise a CSS content @@ -834,91 +769,6 @@ css_error nscss_register_import(struct content_css_data *c, */ static void nscss_fini(void) { -#define CSS_LWC_STRING_UNREF(NAME) \ - do { \ - if (nscss_lwc_string_##NAME != NULL) { \ - lwc_string_unref(nscss_lwc_string_##NAME); \ - nscss_lwc_string_##NAME = NULL; \ - } \ - } while (0) - - CSS_LWC_STRING_UNREF(a); - CSS_LWC_STRING_UNREF(abscenter); - CSS_LWC_STRING_UNREF(absmiddle); - CSS_LWC_STRING_UNREF(align); - CSS_LWC_STRING_UNREF(applet); - CSS_LWC_STRING_UNREF(baseline); - CSS_LWC_STRING_UNREF(body); - CSS_LWC_STRING_UNREF(bottom); - CSS_LWC_STRING_UNREF(caption); - CSS_LWC_STRING_UNREF(center); - CSS_LWC_STRING_UNREF(col); - CSS_LWC_STRING_UNREF(div); - CSS_LWC_STRING_UNREF(embed); - CSS_LWC_STRING_UNREF(font); - CSS_LWC_STRING_UNREF(h1); - CSS_LWC_STRING_UNREF(h2); - CSS_LWC_STRING_UNREF(h3); - CSS_LWC_STRING_UNREF(h4); - CSS_LWC_STRING_UNREF(h5); - CSS_LWC_STRING_UNREF(h6); - CSS_LWC_STRING_UNREF(hr); - CSS_LWC_STRING_UNREF(iframe); - CSS_LWC_STRING_UNREF(img); - CSS_LWC_STRING_UNREF(input); - CSS_LWC_STRING_UNREF(justify); - CSS_LWC_STRING_UNREF(left); - CSS_LWC_STRING_UNREF(middle); - CSS_LWC_STRING_UNREF(object); - CSS_LWC_STRING_UNREF(p); - CSS_LWC_STRING_UNREF(password); - CSS_LWC_STRING_UNREF(right); - CSS_LWC_STRING_UNREF(table); - CSS_LWC_STRING_UNREF(tbody); - CSS_LWC_STRING_UNREF(td); - CSS_LWC_STRING_UNREF(text); - CSS_LWC_STRING_UNREF(textarea); - CSS_LWC_STRING_UNREF(texttop); - CSS_LWC_STRING_UNREF(tfoot); - CSS_LWC_STRING_UNREF(th); - CSS_LWC_STRING_UNREF(thead); - CSS_LWC_STRING_UNREF(top); - CSS_LWC_STRING_UNREF(tr); -#undef CSS_LWC_STRING_UNREF - - -#define CSS_DOM_STRING_UNREF(NAME) \ - do { \ - if (nscss_dom_string_##NAME != NULL) { \ - dom_string_unref(nscss_dom_string_##NAME); \ - nscss_dom_string_##NAME = NULL; \ - } \ - } while (0) - - CSS_DOM_STRING_UNREF(align); - CSS_DOM_STRING_UNREF(background); - CSS_DOM_STRING_UNREF(bgcolor); - CSS_DOM_STRING_UNREF(border); - CSS_DOM_STRING_UNREF(bordercolor); - CSS_DOM_STRING_UNREF(cellpadding); - CSS_DOM_STRING_UNREF(cellspacing); - CSS_DOM_STRING_UNREF(color); - CSS_DOM_STRING_UNREF(cols); - CSS_DOM_STRING_UNREF(height); - CSS_DOM_STRING_UNREF(href); - CSS_DOM_STRING_UNREF(hspace); - CSS_DOM_STRING_UNREF(link); - CSS_DOM_STRING_UNREF(rows); - CSS_DOM_STRING_UNREF(size); - CSS_DOM_STRING_UNREF(text); - CSS_DOM_STRING_UNREF(type); - CSS_DOM_STRING_UNREF(valign); - CSS_DOM_STRING_UNREF(vlink); - CSS_DOM_STRING_UNREF(vspace); - CSS_DOM_STRING_UNREF(width); -#undef CSS_DOM_STRING_UNREF - - if (css_charset != NULL) { lwc_string_unref(css_charset); css_charset = NULL; @@ -949,7 +799,6 @@ nserror nscss_init(void) { lwc_error lerror; nserror error; - dom_exception exc; lerror = lwc_intern_string("charset", SLEN("charset"), &css_charset); if (lerror != lwc_error_ok) { @@ -957,101 +806,6 @@ nserror nscss_init(void) goto error; } - -#define CSS_LWC_STRING_INTERN(NAME) \ - do { \ - lerror = lwc_intern_string( \ - (const char *)#NAME, \ - sizeof(#NAME) - 1, \ - &nscss_lwc_string_##NAME ); \ - if ((lerror != lwc_error_ok) || \ - (nscss_lwc_string_##NAME == NULL)) { \ - error = NSERROR_NOMEM; \ - goto error; \ - } \ - } while(0) - - CSS_LWC_STRING_INTERN(a); - CSS_LWC_STRING_INTERN(abscenter); - CSS_LWC_STRING_INTERN(absmiddle); - CSS_LWC_STRING_INTERN(align); - CSS_LWC_STRING_INTERN(applet); - CSS_LWC_STRING_INTERN(baseline); - CSS_LWC_STRING_INTERN(body); - CSS_LWC_STRING_INTERN(bottom); - CSS_LWC_STRING_INTERN(caption); - CSS_LWC_STRING_INTERN(center); - CSS_LWC_STRING_INTERN(col); - CSS_LWC_STRING_INTERN(div); - CSS_LWC_STRING_INTERN(embed); - CSS_LWC_STRING_INTERN(font); - CSS_LWC_STRING_INTERN(h1); - CSS_LWC_STRING_INTERN(h2); - CSS_LWC_STRING_INTERN(h3); - CSS_LWC_STRING_INTERN(h4); - CSS_LWC_STRING_INTERN(h5); - CSS_LWC_STRING_INTERN(h6); - CSS_LWC_STRING_INTERN(hr); - CSS_LWC_STRING_INTERN(iframe); - CSS_LWC_STRING_INTERN(img); - CSS_LWC_STRING_INTERN(input); - CSS_LWC_STRING_INTERN(justify); - CSS_LWC_STRING_INTERN(left); - CSS_LWC_STRING_INTERN(middle); - CSS_LWC_STRING_INTERN(object); - CSS_LWC_STRING_INTERN(p); - CSS_LWC_STRING_INTERN(password); - CSS_LWC_STRING_INTERN(right); - CSS_LWC_STRING_INTERN(table); - CSS_LWC_STRING_INTERN(tbody); - CSS_LWC_STRING_INTERN(td); - CSS_LWC_STRING_INTERN(text); - CSS_LWC_STRING_INTERN(textarea); - CSS_LWC_STRING_INTERN(texttop); - CSS_LWC_STRING_INTERN(tfoot); - CSS_LWC_STRING_INTERN(th); - CSS_LWC_STRING_INTERN(thead); - CSS_LWC_STRING_INTERN(top); - CSS_LWC_STRING_INTERN(tr); -#undef CSS_LWC_STRING_INTERN - - -#define CSS_DOM_STRING_INTERN(NAME) \ - do { \ - exc = dom_string_create_interned( \ - (const uint8_t *)#NAME, \ - sizeof(#NAME) - 1, \ - &nscss_dom_string_##NAME ); \ - if ((exc != DOM_NO_ERR) || \ - (nscss_dom_string_##NAME == NULL)) { \ - error = NSERROR_NOMEM; \ - goto error; \ - } \ - } while(0) - - CSS_DOM_STRING_INTERN(align); - CSS_DOM_STRING_INTERN(background); - CSS_DOM_STRING_INTERN(bgcolor); - CSS_DOM_STRING_INTERN(border); - CSS_DOM_STRING_INTERN(bordercolor); - CSS_DOM_STRING_INTERN(cellpadding); - CSS_DOM_STRING_INTERN(cellspacing); - CSS_DOM_STRING_INTERN(color); - CSS_DOM_STRING_INTERN(cols); - CSS_DOM_STRING_INTERN(height); - CSS_DOM_STRING_INTERN(href); - CSS_DOM_STRING_INTERN(hspace); - CSS_DOM_STRING_INTERN(link); - CSS_DOM_STRING_INTERN(rows); - CSS_DOM_STRING_INTERN(size); - CSS_DOM_STRING_INTERN(text); - CSS_DOM_STRING_INTERN(type); - CSS_DOM_STRING_INTERN(valign); - CSS_DOM_STRING_INTERN(vlink); - CSS_DOM_STRING_INTERN(vspace); - CSS_DOM_STRING_INTERN(width); -#undef CSS_DOM_STRING_INTERN - error = content_factory_register_handler("text/css", &css_content_handler); if (error != NSERROR_OK) diff --git a/css/internal.h b/css/internal.h index a5a3e3210..0344d6b32 100644 --- a/css/internal.h +++ b/css/internal.h @@ -24,71 +24,4 @@ css_error nscss_resolve_url(void *pw, const char *base, lwc_string *rel, lwc_string **abs); -/* lwc_string strings */ -extern lwc_string *nscss_lwc_string_a; -extern lwc_string *nscss_lwc_string_abscenter; -extern lwc_string *nscss_lwc_string_absmiddle; -extern lwc_string *nscss_lwc_string_align; -extern lwc_string *nscss_lwc_string_applet; -extern lwc_string *nscss_lwc_string_baseline; -extern lwc_string *nscss_lwc_string_body; -extern lwc_string *nscss_lwc_string_bottom; -extern lwc_string *nscss_lwc_string_caption; -extern lwc_string *nscss_lwc_string_center; -extern lwc_string *nscss_lwc_string_col; -extern lwc_string *nscss_lwc_string_div; -extern lwc_string *nscss_lwc_string_embed; -extern lwc_string *nscss_lwc_string_font; -extern lwc_string *nscss_lwc_string_h1; -extern lwc_string *nscss_lwc_string_h2; -extern lwc_string *nscss_lwc_string_h3; -extern lwc_string *nscss_lwc_string_h4; -extern lwc_string *nscss_lwc_string_h5; -extern lwc_string *nscss_lwc_string_h6; -extern lwc_string *nscss_lwc_string_hr; -extern lwc_string *nscss_lwc_string_iframe; -extern lwc_string *nscss_lwc_string_img; -extern lwc_string *nscss_lwc_string_input; -extern lwc_string *nscss_lwc_string_justify; -extern lwc_string *nscss_lwc_string_left; -extern lwc_string *nscss_lwc_string_middle; -extern lwc_string *nscss_lwc_string_object; -extern lwc_string *nscss_lwc_string_p; -extern lwc_string *nscss_lwc_string_password; -extern lwc_string *nscss_lwc_string_right; -extern lwc_string *nscss_lwc_string_table; -extern lwc_string *nscss_lwc_string_tbody; -extern lwc_string *nscss_lwc_string_td; -extern lwc_string *nscss_lwc_string_text; -extern lwc_string *nscss_lwc_string_textarea; -extern lwc_string *nscss_lwc_string_texttop; -extern lwc_string *nscss_lwc_string_tfoot; -extern lwc_string *nscss_lwc_string_th; -extern lwc_string *nscss_lwc_string_thead; -extern lwc_string *nscss_lwc_string_top; -extern lwc_string *nscss_lwc_string_tr; - -/* dom_string strings */ -extern struct dom_string *nscss_dom_string_align; -extern struct dom_string *nscss_dom_string_background; -extern struct dom_string *nscss_dom_string_bgcolor; -extern struct dom_string *nscss_dom_string_border; -extern struct dom_string *nscss_dom_string_bordercolor; -extern struct dom_string *nscss_dom_string_cellpadding; -extern struct dom_string *nscss_dom_string_cellspacing; -extern struct dom_string *nscss_dom_string_color; -extern struct dom_string *nscss_dom_string_cols; -extern struct dom_string *nscss_dom_string_height; -extern struct dom_string *nscss_dom_string_href; -extern struct dom_string *nscss_dom_string_hspace; -extern struct dom_string *nscss_dom_string_link; -extern struct dom_string *nscss_dom_string_rows; -extern struct dom_string *nscss_dom_string_size; -extern struct dom_string *nscss_dom_string_text; -extern struct dom_string *nscss_dom_string_type; -extern struct dom_string *nscss_dom_string_valign; -extern struct dom_string *nscss_dom_string_vlink; -extern struct dom_string *nscss_dom_string_vspace; -extern struct dom_string *nscss_dom_string_width; - #endif diff --git a/css/select.c b/css/select.c index a92c47601..5c620b1ed 100644 --- a/css/select.c +++ b/css/select.c @@ -28,6 +28,7 @@ #include "css/utils.h" #include "desktop/gui.h" #include "desktop/options.h" +#include "utils/corestrings.h" #include "utils/log.h" #include "utils/url.h" #include "utils/utils.h" @@ -1515,9 +1516,10 @@ css_error node_is_link(void *pw, void *n, bool *match) return CSS_NOMEM; } - if (dom_string_caseless_lwc_isequal(node_name, nscss_lwc_string_a)) { + if (dom_string_caseless_lwc_isequal(node_name, corestring_lwc_a)) { bool has_href; - exc = dom_element_has_attribute(node, nscss_dom_string_href, &has_href); + exc = dom_element_has_attribute(node, corestring_dom_href, + &has_href); if ((exc == DOM_NO_ERR) && (has_href)) { *match = true; } else { @@ -1751,31 +1753,31 @@ node_presentational_hint_vertical_align(nscss_select_ctx *ctx, if (err != DOM_NO_ERR) return CSS_PROPERTY_NOT_SET; - if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_col) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_thead) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_tbody) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_tfoot) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_tr) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th)) { + if (dom_string_caseless_lwc_isequal(name, corestring_lwc_col) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_thead) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_tbody) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_tfoot) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_tr) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_td) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_th)) { err = dom_element_get_attribute(node, - nscss_dom_string_valign, &valign); + corestring_dom_valign, &valign); if (err != DOM_NO_ERR || valign == NULL) { dom_string_unref(name); return CSS_PROPERTY_NOT_SET; } if (dom_string_caseless_lwc_isequal(valign, - nscss_lwc_string_top)) { + corestring_lwc_top)) { hint->status = CSS_VERTICAL_ALIGN_TOP; } else if (dom_string_caseless_lwc_isequal(valign, - nscss_lwc_string_middle)) { + corestring_lwc_middle)) { hint->status = CSS_VERTICAL_ALIGN_MIDDLE; } else if (dom_string_caseless_lwc_isequal(valign, - nscss_lwc_string_bottom)) { + corestring_lwc_bottom)) { hint->status = CSS_VERTICAL_ALIGN_BOTTOM; } else if (dom_string_caseless_lwc_isequal(valign, - nscss_lwc_string_baseline)) { + corestring_lwc_baseline)) { hint->status = CSS_VERTICAL_ALIGN_BASELINE; } else { dom_string_unref(valign); @@ -1788,38 +1790,38 @@ node_presentational_hint_vertical_align(nscss_select_ctx *ctx, return CSS_OK; } else if (dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_applet) || + corestring_lwc_applet) || dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_embed) || + corestring_lwc_embed) || dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_iframe) || + corestring_lwc_iframe) || dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_img) || + corestring_lwc_img) || dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_object)) { + corestring_lwc_object)) { /** \todo input[type=image][align=*] - $11.3.3 */ err = dom_element_get_attribute(node, - nscss_dom_string_align, &valign); + corestring_dom_align, &valign); if (err != DOM_NO_ERR || valign == NULL) { dom_string_unref(name); return CSS_PROPERTY_NOT_SET; } if (dom_string_caseless_lwc_isequal(valign, - nscss_lwc_string_top)) { + corestring_lwc_top)) { hint->status = CSS_VERTICAL_ALIGN_TOP; } else if (dom_string_caseless_lwc_isequal(valign, - nscss_lwc_string_bottom) || + corestring_lwc_bottom) || dom_string_caseless_lwc_isequal(valign, - nscss_lwc_string_baseline)) { + corestring_lwc_baseline)) { hint->status = CSS_VERTICAL_ALIGN_BASELINE; } else if (dom_string_caseless_lwc_isequal(valign, - nscss_lwc_string_texttop)) { + corestring_lwc_texttop)) { hint->status = CSS_VERTICAL_ALIGN_TEXT_TOP; } else if (dom_string_caseless_lwc_isequal(valign, - nscss_lwc_string_absmiddle) || + corestring_lwc_absmiddle) || dom_string_caseless_lwc_isequal(valign, - nscss_lwc_string_abscenter)) { + corestring_lwc_abscenter)) { hint->status = CSS_VERTICAL_ALIGN_MIDDLE; } else { dom_string_unref(valign); @@ -1850,31 +1852,31 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx, if (err != DOM_NO_ERR) return CSS_PROPERTY_NOT_SET; - if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_p) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_h1) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_h2) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_h3) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_h4) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_h5) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_h6)) { + if (dom_string_caseless_lwc_isequal(name, corestring_lwc_p) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_h1) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_h2) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_h3) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_h4) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_h5) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_h6)) { err = dom_element_get_attribute(node, - nscss_dom_string_align, &align); + corestring_dom_align, &align); if (err != DOM_NO_ERR || align == NULL) { dom_string_unref(name); return CSS_PROPERTY_NOT_SET; } if (dom_string_caseless_lwc_isequal(align, - nscss_lwc_string_left)) { + corestring_lwc_left)) { hint->status = CSS_TEXT_ALIGN_LEFT; } else if (dom_string_caseless_lwc_isequal(align, - nscss_lwc_string_center)) { + corestring_lwc_center)) { hint->status = CSS_TEXT_ALIGN_CENTER; } else if (dom_string_caseless_lwc_isequal(align, - nscss_lwc_string_right)) { + corestring_lwc_right)) { hint->status = CSS_TEXT_ALIGN_RIGHT; } else if (dom_string_caseless_lwc_isequal(align, - nscss_lwc_string_justify)) { + corestring_lwc_justify)) { hint->status = CSS_TEXT_ALIGN_JUSTIFY; } else { dom_string_unref(align); @@ -1887,32 +1889,32 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx, return CSS_OK; } else if (dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_center)) { + corestring_lwc_center)) { hint->status = CSS_TEXT_ALIGN_LIBCSS_CENTER; dom_string_unref(name); return CSS_OK; } else if (dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_caption)) { + corestring_lwc_caption)) { err = dom_element_get_attribute(node, - nscss_dom_string_align, &align); + corestring_dom_align, &align); if (err != DOM_NO_ERR) { dom_string_unref(name); return CSS_PROPERTY_NOT_SET; } if (align == NULL || dom_string_caseless_lwc_isequal(align, - nscss_lwc_string_center)) { + corestring_lwc_center)) { hint->status = CSS_TEXT_ALIGN_LIBCSS_CENTER; } else if (dom_string_caseless_lwc_isequal(align, - nscss_lwc_string_left)) { + corestring_lwc_left)) { hint->status = CSS_TEXT_ALIGN_LIBCSS_LEFT; } else if (dom_string_caseless_lwc_isequal(align, - nscss_lwc_string_right)) { + corestring_lwc_right)) { hint->status = CSS_TEXT_ALIGN_LIBCSS_RIGHT; } else if (dom_string_caseless_lwc_isequal(align, - nscss_lwc_string_justify)) { + corestring_lwc_justify)) { hint->status = CSS_TEXT_ALIGN_JUSTIFY; } else { dom_string_unref(align); @@ -1926,37 +1928,37 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx, return CSS_OK; } else if (dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_div) || + corestring_lwc_div) || dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_thead) || + corestring_lwc_thead) || dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_tbody) || + corestring_lwc_tbody) || dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_tfoot) || + corestring_lwc_tfoot) || dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_tr) || + corestring_lwc_tr) || dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_td) || + corestring_lwc_td) || dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_th)) { + corestring_lwc_th)) { err = dom_element_get_attribute(node, - nscss_dom_string_align, &align); + corestring_dom_align, &align); if (err != DOM_NO_ERR || align == NULL) { dom_string_unref(name); return CSS_PROPERTY_NOT_SET; } if (dom_string_caseless_lwc_isequal(align, - nscss_lwc_string_center)) { + corestring_lwc_center)) { hint->status = CSS_TEXT_ALIGN_LIBCSS_CENTER; } else if (dom_string_caseless_lwc_isequal(align, - nscss_lwc_string_left)) { + corestring_lwc_left)) { hint->status = CSS_TEXT_ALIGN_LIBCSS_LEFT; } else if (dom_string_caseless_lwc_isequal(align, - nscss_lwc_string_right)) { + corestring_lwc_right)) { hint->status = CSS_TEXT_ALIGN_LIBCSS_RIGHT; } else if (dom_string_caseless_lwc_isequal(align, - nscss_lwc_string_justify)) { + corestring_lwc_justify)) { hint->status = CSS_TEXT_ALIGN_JUSTIFY; } else { dom_string_unref(align); @@ -1969,7 +1971,7 @@ node_presentational_hint_text_align(nscss_select_ctx *ctx, return CSS_OK; } else if (dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_table)) { + corestring_lwc_table)) { /* Tables usually reset alignment */ hint->status = CSS_TEXT_ALIGN_INHERIT_IF_NON_MAGIC; @@ -1997,12 +1999,12 @@ node_presentational_hint_padding_trbl(nscss_select_ctx *ctx, if (exc != DOM_NO_ERR) return CSS_BADPARM; - if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th)) { + if (dom_string_caseless_lwc_isequal(name, corestring_lwc_td) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_th)) { css_qname qs; dom_node *tablenode = NULL; qs.ns = NULL; - qs.name = lwc_string_ref(nscss_lwc_string_table); + qs.name = lwc_string_ref(corestring_lwc_table); if (named_ancestor_node(ctx, node, &qs, (void *)&tablenode) != CSS_OK) { /* Didn't find, or had error */ @@ -2014,7 +2016,7 @@ node_presentational_hint_padding_trbl(nscss_select_ctx *ctx, if (tablenode != NULL) { exc = dom_element_get_attribute(tablenode, - nscss_dom_string_cellpadding, + corestring_dom_cellpadding, &cellpadding); if (exc != DOM_NO_ERR) { dom_string_unref(name); @@ -2056,11 +2058,11 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx, if (exc != DOM_NO_ERR) return CSS_BADPARM; - if (dom_string_caseless_lwc_isequal(n, nscss_lwc_string_img) || - dom_string_caseless_lwc_isequal(n, nscss_lwc_string_applet)) { + if (dom_string_caseless_lwc_isequal(n, corestring_lwc_img) || + dom_string_caseless_lwc_isequal(n, corestring_lwc_applet)) { dom_string_unref(n); exc = dom_element_get_attribute(node, - nscss_dom_string_hspace, &n); + corestring_dom_hspace, &n); if (exc != DOM_NO_ERR) { return CSS_BADPARM; } @@ -2078,11 +2080,11 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx, } dom_string_unref(n); return CSS_OK; - } else if (dom_string_caseless_lwc_isequal(n, nscss_lwc_string_table) || - dom_string_caseless_lwc_isequal(n, nscss_lwc_string_align)) { + } else if (dom_string_caseless_lwc_isequal(n, corestring_lwc_table) || + dom_string_caseless_lwc_isequal(n, corestring_lwc_align)) { dom_string_unref(n); exc = dom_element_get_attribute(node, - nscss_dom_string_align, &n); + corestring_dom_align, &n); if (exc != DOM_NO_ERR) { return CSS_BADPARM; } @@ -2091,13 +2093,13 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx, return CSS_PROPERTY_NOT_SET; if (dom_string_caseless_lwc_isequal(n, - nscss_lwc_string_center) || + corestring_lwc_center) || dom_string_caseless_lwc_isequal(n, - nscss_lwc_string_abscenter) || + corestring_lwc_abscenter) || dom_string_caseless_lwc_isequal(n, - nscss_lwc_string_middle) || + corestring_lwc_middle) || dom_string_caseless_lwc_isequal(n, - nscss_lwc_string_absmiddle)) { + corestring_lwc_absmiddle)) { hint->status = CSS_MARGIN_AUTO; } else { dom_string_unref(n); @@ -2106,10 +2108,10 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx, dom_string_unref(n); return CSS_OK; - } else if (dom_string_caseless_lwc_isequal(n, nscss_lwc_string_hr)) { + } else if (dom_string_caseless_lwc_isequal(n, corestring_lwc_hr)) { dom_string_unref(n); exc = dom_element_get_attribute(node, - nscss_dom_string_align, &n); + corestring_dom_align, &n); if (exc != DOM_NO_ERR) return CSS_BADPARM; @@ -2117,7 +2119,7 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx, return CSS_PROPERTY_NOT_SET; if (dom_string_caseless_lwc_isequal(n, - nscss_lwc_string_left)) { + corestring_lwc_left)) { if (property == CSS_PROP_MARGIN_LEFT) { hint->data.length.value = 0; hint->data.length.unit = CSS_UNIT_PX; @@ -2126,10 +2128,10 @@ node_presentational_hint_margin_rl(nscss_select_ctx *ctx, hint->status = CSS_MARGIN_AUTO; } } else if (dom_string_caseless_lwc_isequal(n, - nscss_lwc_string_center)) { + corestring_lwc_center)) { hint->status = CSS_MARGIN_AUTO; } else if (dom_string_caseless_lwc_isequal(n, - nscss_lwc_string_right)) { + corestring_lwc_right)) { if (property == CSS_PROP_MARGIN_RIGHT) { hint->data.length.value = 0; hint->data.length.unit = CSS_UNIT_PX; @@ -2163,9 +2165,9 @@ node_presentational_hint_margin_tb(nscss_select_ctx *ctx, if (exc != DOM_NO_ERR) return CSS_BADPARM; - if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_img) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_applet)) { - exc = dom_element_get_attribute(node, nscss_dom_string_vspace, + if (dom_string_caseless_lwc_isequal(name, corestring_lwc_img) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_applet)) { + exc = dom_element_get_attribute(node, corestring_dom_vspace, &vspace); if (exc != DOM_NO_ERR) { dom_string_unref(name); @@ -2206,12 +2208,12 @@ node_presentational_hint_border_trbl_width(nscss_select_ctx *ctx, if (exc != DOM_NO_ERR) return CSS_BADPARM; - if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th)) { + if (dom_string_caseless_lwc_isequal(name, corestring_lwc_td) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_th)) { css_qname qs; dom_node *tablenode = NULL; qs.ns = NULL; - qs.name = lwc_string_ref(nscss_lwc_string_table); + qs.name = lwc_string_ref(corestring_lwc_table); if (named_ancestor_node(ctx, node, &qs, (void *)&tablenode) != CSS_OK) { /* Didn't find, or had error */ @@ -2223,7 +2225,7 @@ node_presentational_hint_border_trbl_width(nscss_select_ctx *ctx, lwc_string_unref(qs.name); if (tablenode != NULL) { exc = dom_element_get_attribute(tablenode, - nscss_dom_string_border, &width); + corestring_dom_border, &width); if (exc != DOM_NO_ERR) { dom_string_unref(name); return CSS_BADPARM; @@ -2234,8 +2236,8 @@ node_presentational_hint_border_trbl_width(nscss_select_ctx *ctx, */ is_table_cell = true; } else if (dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_table)) { - exc = dom_element_get_attribute(node, nscss_dom_string_border, + corestring_lwc_table)) { + exc = dom_element_get_attribute(node, corestring_dom_border, &width); if (exc != DOM_NO_ERR) { dom_string_unref(name); @@ -2280,12 +2282,12 @@ node_presentational_hint_border_trbl_style(nscss_select_ctx *ctx, if (exc != DOM_NO_ERR) return CSS_BADPARM; - if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th)) { + if (dom_string_caseless_lwc_isequal(name, corestring_lwc_td) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_th)) { css_qname qs; dom_node *tablenode = NULL; qs.ns = NULL; - qs.name = lwc_string_ref(nscss_lwc_string_table); + qs.name = lwc_string_ref(corestring_lwc_table); if (named_ancestor_node(ctx, node, &qs, (void *)&tablenode) != CSS_OK) { @@ -2301,7 +2303,7 @@ node_presentational_hint_border_trbl_style(nscss_select_ctx *ctx, bool has_border = false; exc = dom_element_has_attribute(tablenode, - nscss_dom_string_border, + corestring_dom_border, &has_border); if (exc != DOM_NO_ERR) { dom_string_unref(name); @@ -2318,11 +2320,11 @@ node_presentational_hint_border_trbl_style(nscss_select_ctx *ctx, * return a reffed node to the CSS */ } else if (dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_table)) { + corestring_lwc_table)) { bool has_border = false; exc = dom_element_has_attribute(node, - nscss_dom_string_border, + corestring_dom_border, &has_border); if (exc != DOM_NO_ERR) { dom_string_unref(name); @@ -2354,12 +2356,12 @@ node_presentational_hint_border_trbl_color(nscss_select_ctx *ctx, if (err != DOM_NO_ERR) return CSS_PROPERTY_NOT_SET; - if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th)) { + if (dom_string_caseless_lwc_isequal(name, corestring_lwc_td) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_th)) { css_qname qs; dom_node *tablenode = NULL; qs.ns = NULL; - qs.name = lwc_string_ref(nscss_lwc_string_table); + qs.name = lwc_string_ref(corestring_lwc_table); if (named_ancestor_node(ctx, node, &qs, (void *)&tablenode) != CSS_OK) { @@ -2373,7 +2375,7 @@ node_presentational_hint_border_trbl_color(nscss_select_ctx *ctx, if (tablenode != NULL) { err = dom_element_get_attribute(node, - nscss_dom_string_bordercolor, + corestring_dom_bordercolor, &bordercolor); } /* No need to unref tablenode, named_ancestor_node does not @@ -2381,9 +2383,9 @@ node_presentational_hint_border_trbl_color(nscss_select_ctx *ctx, */ } else if (dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_table)) { + corestring_lwc_table)) { err = dom_element_get_attribute(node, - nscss_dom_string_bordercolor, + corestring_dom_bordercolor, &bordercolor); } @@ -2419,7 +2421,7 @@ node_presentational_hint_border_spacing(nscss_select_ctx *ctx, } if (!dom_string_caseless_lwc_isequal(node_name, - nscss_lwc_string_table)) { + corestring_lwc_table)) { dom_string_unref(node_name); return CSS_PROPERTY_NOT_SET; } @@ -2427,7 +2429,7 @@ node_presentational_hint_border_spacing(nscss_select_ctx *ctx, dom_string_unref(node_name); err = dom_element_get_attribute(node, - nscss_dom_string_cellspacing, &cellspacing); + corestring_dom_cellspacing, &cellspacing); if ((err != DOM_NO_ERR) || (cellspacing == NULL)) { return CSS_PROPERTY_NOT_SET; } @@ -2464,26 +2466,26 @@ node_presentational_hint_width(nscss_select_ctx *ctx, if (err != DOM_NO_ERR) return CSS_PROPERTY_NOT_SET; - if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_hr) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_iframe) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_img) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_object) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_table) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_applet)) { + if (dom_string_caseless_lwc_isequal(name, corestring_lwc_hr) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_iframe) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_img) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_object) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_table) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_td) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_th) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_applet)) { err = dom_element_get_attribute(node, - nscss_dom_string_width, &width); + corestring_dom_width, &width); } else if (dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_textarea)) { + corestring_lwc_textarea)) { textarea = true; err = dom_element_get_attribute(node, - nscss_dom_string_cols, &width); + corestring_dom_cols, &width); } else if (dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_input)) { + corestring_lwc_input)) { input = true; err = dom_element_get_attribute(node, - nscss_dom_string_size, &width); + corestring_dom_size, &width); } dom_string_unref(name); @@ -2505,15 +2507,15 @@ node_presentational_hint_width(nscss_select_ctx *ctx, if (input) { err = dom_element_get_attribute(node, - nscss_dom_string_type, &width); + corestring_dom_type, &width); if ((err != DOM_NO_ERR) || (width == NULL)) { return CSS_PROPERTY_NOT_SET; } if (dom_string_lwc_isequal(width, - nscss_lwc_string_text) || + corestring_lwc_text) || dom_string_lwc_isequal(width, - nscss_lwc_string_password)) { + corestring_lwc_password)) { hint->data.length.unit = CSS_UNIT_EX; } @@ -2544,20 +2546,20 @@ node_presentational_hint_height(nscss_select_ctx *ctx, if (err != DOM_NO_ERR) return CSS_PROPERTY_NOT_SET; - if (dom_string_caseless_lwc_isequal(name, nscss_lwc_string_iframe) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_td) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_th) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_tr) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_img) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_object) || - dom_string_caseless_lwc_isequal(name, nscss_lwc_string_applet)) { + if (dom_string_caseless_lwc_isequal(name, corestring_lwc_iframe) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_td) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_th) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_tr) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_img) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_object) || + dom_string_caseless_lwc_isequal(name, corestring_lwc_applet)) { err = dom_element_get_attribute(node, - nscss_dom_string_height, &height); + corestring_dom_height, &height); } else if (dom_string_caseless_lwc_isequal(name, - nscss_lwc_string_textarea)) { + corestring_lwc_textarea)) { textarea = true; err = dom_element_get_attribute(node, - nscss_dom_string_rows, &height); + corestring_dom_rows, &height); } dom_string_unref(name); @@ -2599,14 +2601,14 @@ node_presentational_hint_font_size(nscss_select_ctx *ctx, } if (!dom_string_caseless_lwc_isequal(node_name, - nscss_lwc_string_font)) { + corestring_lwc_font)) { dom_string_unref(node_name); return CSS_PROPERTY_NOT_SET; } dom_string_unref(node_name); - err = dom_element_get_attribute(node, nscss_dom_string_align, &size); + err = dom_element_get_attribute(node, corestring_dom_align, &size); if ((err != DOM_NO_ERR) || (size == NULL)) { return CSS_PROPERTY_NOT_SET; } @@ -2639,31 +2641,31 @@ node_presentational_hint_float(nscss_select_ctx *ctx, /** \todo input[type=image][align=*] - $11.3.3 */ if (!dom_string_caseless_lwc_isequal(node_name, - nscss_lwc_string_applet) && + corestring_lwc_applet) && !dom_string_caseless_lwc_isequal(node_name, - nscss_lwc_string_embed) && + corestring_lwc_embed) && !dom_string_caseless_lwc_isequal(node_name, - nscss_lwc_string_iframe) && + corestring_lwc_iframe) && !dom_string_caseless_lwc_isequal(node_name, - nscss_lwc_string_img) && + corestring_lwc_img) && !dom_string_caseless_lwc_isequal(node_name, - nscss_lwc_string_object)) { + corestring_lwc_object)) { dom_string_unref(node_name); return CSS_PROPERTY_NOT_SET; } dom_string_unref(node_name); - err = dom_element_get_attribute(node, nscss_dom_string_align, &align); + err = dom_element_get_attribute(node, corestring_dom_align, &align); if ((err != DOM_NO_ERR) || (align == NULL)) { return CSS_PROPERTY_NOT_SET; } - if (dom_string_lwc_isequal(align, nscss_lwc_string_left)) { + if (dom_string_lwc_isequal(align, corestring_lwc_left)) { hint->status = CSS_FLOAT_LEFT; dom_string_unref(align); return CSS_OK; - } else if (dom_string_lwc_isequal(align, nscss_lwc_string_right)) { + } else if (dom_string_lwc_isequal(align, corestring_lwc_right)) { hint->status = CSS_FLOAT_RIGHT; dom_string_unref(align); return CSS_OK; @@ -2689,14 +2691,14 @@ node_presentational_hint_color(nscss_select_ctx *ctx, return CSS_NOMEM; } - if (dom_string_caseless_lwc_isequal(node_name, nscss_lwc_string_a)) { + if (dom_string_caseless_lwc_isequal(node_name, corestring_lwc_a)) { /* find body node */ css_qname qs; dom_node *bodynode = NULL; bool is_visited; qs.ns = NULL; - qs.name = lwc_string_ref(nscss_lwc_string_body); + qs.name = lwc_string_ref(corestring_lwc_body); if (named_ancestor_node(ctx, node, &qs, (void *)&bodynode) != CSS_OK) { /* Didn't find, or had error */ @@ -2719,30 +2721,30 @@ node_presentational_hint_color(nscss_select_ctx *ctx, if (is_visited) { err = dom_element_get_attribute(node, - nscss_dom_string_vlink, &color); + corestring_dom_vlink, &color); if ((err != DOM_NO_ERR) || (color == NULL)) { dom_string_unref(node_name); return CSS_PROPERTY_NOT_SET; } } else { err = dom_element_get_attribute(node, - nscss_dom_string_link, &color); + corestring_dom_link, &color); if ((err != DOM_NO_ERR) || (color == NULL)) { dom_string_unref(node_name); return CSS_PROPERTY_NOT_SET; } } } else if (dom_string_caseless_lwc_isequal(node_name, - nscss_lwc_string_body)) { + corestring_lwc_body)) { err = dom_element_get_attribute(node, - nscss_dom_string_text, &color); + corestring_dom_text, &color); if ((err != DOM_NO_ERR) || (color == NULL)) { dom_string_unref(node_name); return CSS_PROPERTY_NOT_SET; } } else { err = dom_element_get_attribute(node, - nscss_dom_string_color, &color); + corestring_dom_color, &color); if ((err != DOM_NO_ERR) || (color == NULL)) { dom_string_unref(node_name); return CSS_PROPERTY_NOT_SET; @@ -2777,19 +2779,19 @@ node_presentational_hint_caption_side(nscss_select_ctx *ctx, } if (!dom_string_caseless_lwc_isequal(node_name, - nscss_lwc_string_caption)) { + corestring_lwc_caption)) { dom_string_unref(node_name); return CSS_PROPERTY_NOT_SET; } dom_string_unref(node_name); - err = dom_element_get_attribute(node, nscss_dom_string_align, &align); + err = dom_element_get_attribute(node, corestring_dom_align, &align); if ((err != DOM_NO_ERR) || (align == NULL)) { return CSS_PROPERTY_NOT_SET; } - if (dom_string_caseless_lwc_isequal(align, nscss_lwc_string_bottom)) { + if (dom_string_caseless_lwc_isequal(align, corestring_lwc_bottom)) { hint->status = CSS_CAPTION_SIDE_BOTTOM; dom_string_unref(align); return CSS_OK; @@ -2809,7 +2811,7 @@ node_presentational_hint_background_color(nscss_select_ctx *ctx, dom_string *bgcolor; err = dom_element_get_attribute(node, - nscss_dom_string_bgcolor, &bgcolor); + corestring_dom_bgcolor, &bgcolor); if ((err != DOM_NO_ERR) || (bgcolor == NULL)) { return CSS_PROPERTY_NOT_SET; } @@ -2839,7 +2841,7 @@ node_presentational_hint_background_image(nscss_select_ctx *ctx, lwc_error lerror; err = dom_element_get_attribute(node, - nscss_dom_string_background, &atr_val); + corestring_dom_background, &atr_val); if ((err != DOM_NO_ERR) || (atr_val == NULL)) { return CSS_PROPERTY_NOT_SET; } diff --git a/desktop/netsurf.c b/desktop/netsurf.c index 4fa7134c0..433acde57 100644 --- a/desktop/netsurf.c +++ b/desktop/netsurf.c @@ -47,6 +47,7 @@ #include "render/html.h" #include "render/textplain.h" +#include "utils/corestrings.h" #include "utils/log.h" #include "utils/url.h" #include "utils/utf8.h" @@ -169,6 +170,11 @@ nserror netsurf_init(int *pargc, messages_load(messages); + /* corestrings init */ + error = corestrings_init(); + if (error != NSERROR_OK) + return error; + /* set up cache limits based on the memory cache size option */ hlcache_parameters.limit = nsoption_int(memory_cache_size); @@ -287,6 +293,7 @@ void netsurf_exit(void) LOG(("Destroying System colours")); gui_system_colour_finalize(); + corestrings_fini(); LOG(("Remaining lwc strings:")); lwc_iterate_strings(netsurf_lwc_iterator, NULL); diff --git a/utils/corestrings.c b/utils/corestrings.c new file mode 100644 index 000000000..d266d17c6 --- /dev/null +++ b/utils/corestrings.c @@ -0,0 +1,293 @@ +/* + * Copyright 2012 Michael Drake + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** \file + * Useful interned string pointers (implementation). + */ + +#include + +#include "utils/corestrings.h" + +/* lwc_string strings */ +lwc_string *corestring_lwc_a; +lwc_string *corestring_lwc_abscenter; +lwc_string *corestring_lwc_absmiddle; +lwc_string *corestring_lwc_align; +lwc_string *corestring_lwc_applet; +lwc_string *corestring_lwc_baseline; +lwc_string *corestring_lwc_body; +lwc_string *corestring_lwc_bottom; +lwc_string *corestring_lwc_caption; +lwc_string *corestring_lwc_center; +lwc_string *corestring_lwc_col; +lwc_string *corestring_lwc_div; +lwc_string *corestring_lwc_embed; +lwc_string *corestring_lwc_font; +lwc_string *corestring_lwc_h1; +lwc_string *corestring_lwc_h2; +lwc_string *corestring_lwc_h3; +lwc_string *corestring_lwc_h4; +lwc_string *corestring_lwc_h5; +lwc_string *corestring_lwc_h6; +lwc_string *corestring_lwc_hr; +lwc_string *corestring_lwc_iframe; +lwc_string *corestring_lwc_img; +lwc_string *corestring_lwc_input; +lwc_string *corestring_lwc_justify; +lwc_string *corestring_lwc_left; +lwc_string *corestring_lwc_middle; +lwc_string *corestring_lwc_object; +lwc_string *corestring_lwc_p; +lwc_string *corestring_lwc_password; +lwc_string *corestring_lwc_right; +lwc_string *corestring_lwc_table; +lwc_string *corestring_lwc_tbody; +lwc_string *corestring_lwc_td; +lwc_string *corestring_lwc_text; +lwc_string *corestring_lwc_textarea; +lwc_string *corestring_lwc_texttop; +lwc_string *corestring_lwc_tfoot; +lwc_string *corestring_lwc_th; +lwc_string *corestring_lwc_thead; +lwc_string *corestring_lwc_top; +lwc_string *corestring_lwc_tr; + +/* dom_string strings */ +dom_string *corestring_dom_align; +dom_string *corestring_dom_background; +dom_string *corestring_dom_bgcolor; +dom_string *corestring_dom_border; +dom_string *corestring_dom_bordercolor; +dom_string *corestring_dom_cellpadding; +dom_string *corestring_dom_cellspacing; +dom_string *corestring_dom_color; +dom_string *corestring_dom_cols; +dom_string *corestring_dom_height; +dom_string *corestring_dom_href; +dom_string *corestring_dom_hspace; +dom_string *corestring_dom_link; +dom_string *corestring_dom_rows; +dom_string *corestring_dom_size; +dom_string *corestring_dom_text; +dom_string *corestring_dom_type; +dom_string *corestring_dom_valign; +dom_string *corestring_dom_vlink; +dom_string *corestring_dom_vspace; +dom_string *corestring_dom_width; + + +/* + * Free the core strings + */ +void corestrings_fini(void) +{ +#define CSS_LWC_STRING_UNREF(NAME) \ + do { \ + if (corestring_lwc_##NAME != NULL) { \ + lwc_string_unref(corestring_lwc_##NAME); \ + corestring_lwc_##NAME = NULL; \ + } \ + } while (0) + + CSS_LWC_STRING_UNREF(a); + CSS_LWC_STRING_UNREF(abscenter); + CSS_LWC_STRING_UNREF(absmiddle); + CSS_LWC_STRING_UNREF(align); + CSS_LWC_STRING_UNREF(applet); + CSS_LWC_STRING_UNREF(baseline); + CSS_LWC_STRING_UNREF(body); + CSS_LWC_STRING_UNREF(bottom); + CSS_LWC_STRING_UNREF(caption); + CSS_LWC_STRING_UNREF(center); + CSS_LWC_STRING_UNREF(col); + CSS_LWC_STRING_UNREF(div); + CSS_LWC_STRING_UNREF(embed); + CSS_LWC_STRING_UNREF(font); + CSS_LWC_STRING_UNREF(h1); + CSS_LWC_STRING_UNREF(h2); + CSS_LWC_STRING_UNREF(h3); + CSS_LWC_STRING_UNREF(h4); + CSS_LWC_STRING_UNREF(h5); + CSS_LWC_STRING_UNREF(h6); + CSS_LWC_STRING_UNREF(hr); + CSS_LWC_STRING_UNREF(iframe); + CSS_LWC_STRING_UNREF(img); + CSS_LWC_STRING_UNREF(input); + CSS_LWC_STRING_UNREF(justify); + CSS_LWC_STRING_UNREF(left); + CSS_LWC_STRING_UNREF(middle); + CSS_LWC_STRING_UNREF(object); + CSS_LWC_STRING_UNREF(p); + CSS_LWC_STRING_UNREF(password); + CSS_LWC_STRING_UNREF(right); + CSS_LWC_STRING_UNREF(table); + CSS_LWC_STRING_UNREF(tbody); + CSS_LWC_STRING_UNREF(td); + CSS_LWC_STRING_UNREF(text); + CSS_LWC_STRING_UNREF(textarea); + CSS_LWC_STRING_UNREF(texttop); + CSS_LWC_STRING_UNREF(tfoot); + CSS_LWC_STRING_UNREF(th); + CSS_LWC_STRING_UNREF(thead); + CSS_LWC_STRING_UNREF(top); + CSS_LWC_STRING_UNREF(tr); +#undef CSS_LWC_STRING_UNREF + +#define CSS_DOM_STRING_UNREF(NAME) \ + do { \ + if (corestring_dom_##NAME != NULL) { \ + dom_string_unref(corestring_dom_##NAME); \ + corestring_dom_##NAME = NULL; \ + } \ + } while (0) + + CSS_DOM_STRING_UNREF(align); + CSS_DOM_STRING_UNREF(background); + CSS_DOM_STRING_UNREF(bgcolor); + CSS_DOM_STRING_UNREF(border); + CSS_DOM_STRING_UNREF(bordercolor); + CSS_DOM_STRING_UNREF(cellpadding); + CSS_DOM_STRING_UNREF(cellspacing); + CSS_DOM_STRING_UNREF(color); + CSS_DOM_STRING_UNREF(cols); + CSS_DOM_STRING_UNREF(height); + CSS_DOM_STRING_UNREF(href); + CSS_DOM_STRING_UNREF(hspace); + CSS_DOM_STRING_UNREF(link); + CSS_DOM_STRING_UNREF(rows); + CSS_DOM_STRING_UNREF(size); + CSS_DOM_STRING_UNREF(text); + CSS_DOM_STRING_UNREF(type); + CSS_DOM_STRING_UNREF(valign); + CSS_DOM_STRING_UNREF(vlink); + CSS_DOM_STRING_UNREF(vspace); + CSS_DOM_STRING_UNREF(width); +#undef CSS_DOM_STRING_UNREF +} + + +/* + * Create the core strings + */ +nserror corestrings_init(void) +{ + lwc_error lerror; + nserror error; + dom_exception exc; + +#define CSS_LWC_STRING_INTERN(NAME) \ + do { \ + lerror = lwc_intern_string( \ + (const char *)#NAME, \ + sizeof(#NAME) - 1, \ + &corestring_lwc_##NAME ); \ + if ((lerror != lwc_error_ok) || \ + (corestring_lwc_##NAME == NULL)) { \ + error = NSERROR_NOMEM; \ + goto error; \ + } \ + } while(0) + + CSS_LWC_STRING_INTERN(a); + CSS_LWC_STRING_INTERN(abscenter); + CSS_LWC_STRING_INTERN(absmiddle); + CSS_LWC_STRING_INTERN(align); + CSS_LWC_STRING_INTERN(applet); + CSS_LWC_STRING_INTERN(baseline); + CSS_LWC_STRING_INTERN(body); + CSS_LWC_STRING_INTERN(bottom); + CSS_LWC_STRING_INTERN(caption); + CSS_LWC_STRING_INTERN(center); + CSS_LWC_STRING_INTERN(col); + CSS_LWC_STRING_INTERN(div); + CSS_LWC_STRING_INTERN(embed); + CSS_LWC_STRING_INTERN(font); + CSS_LWC_STRING_INTERN(h1); + CSS_LWC_STRING_INTERN(h2); + CSS_LWC_STRING_INTERN(h3); + CSS_LWC_STRING_INTERN(h4); + CSS_LWC_STRING_INTERN(h5); + CSS_LWC_STRING_INTERN(h6); + CSS_LWC_STRING_INTERN(hr); + CSS_LWC_STRING_INTERN(iframe); + CSS_LWC_STRING_INTERN(img); + CSS_LWC_STRING_INTERN(input); + CSS_LWC_STRING_INTERN(justify); + CSS_LWC_STRING_INTERN(left); + CSS_LWC_STRING_INTERN(middle); + CSS_LWC_STRING_INTERN(object); + CSS_LWC_STRING_INTERN(p); + CSS_LWC_STRING_INTERN(password); + CSS_LWC_STRING_INTERN(right); + CSS_LWC_STRING_INTERN(table); + CSS_LWC_STRING_INTERN(tbody); + CSS_LWC_STRING_INTERN(td); + CSS_LWC_STRING_INTERN(text); + CSS_LWC_STRING_INTERN(textarea); + CSS_LWC_STRING_INTERN(texttop); + CSS_LWC_STRING_INTERN(tfoot); + CSS_LWC_STRING_INTERN(th); + CSS_LWC_STRING_INTERN(thead); + CSS_LWC_STRING_INTERN(top); + CSS_LWC_STRING_INTERN(tr); +#undef CSS_LWC_STRING_INTERN + +#define CSS_DOM_STRING_INTERN(NAME) \ + do { \ + exc = dom_string_create_interned( \ + (const uint8_t *)#NAME, \ + sizeof(#NAME) - 1, \ + &corestring_dom_##NAME ); \ + if ((exc != DOM_NO_ERR) || \ + (corestring_dom_##NAME == NULL)) { \ + error = NSERROR_NOMEM; \ + goto error; \ + } \ + } while(0) + + CSS_DOM_STRING_INTERN(align); + CSS_DOM_STRING_INTERN(background); + CSS_DOM_STRING_INTERN(bgcolor); + CSS_DOM_STRING_INTERN(border); + CSS_DOM_STRING_INTERN(bordercolor); + CSS_DOM_STRING_INTERN(cellpadding); + CSS_DOM_STRING_INTERN(cellspacing); + CSS_DOM_STRING_INTERN(color); + CSS_DOM_STRING_INTERN(cols); + CSS_DOM_STRING_INTERN(height); + CSS_DOM_STRING_INTERN(href); + CSS_DOM_STRING_INTERN(hspace); + CSS_DOM_STRING_INTERN(link); + CSS_DOM_STRING_INTERN(rows); + CSS_DOM_STRING_INTERN(size); + CSS_DOM_STRING_INTERN(text); + CSS_DOM_STRING_INTERN(type); + CSS_DOM_STRING_INTERN(valign); + CSS_DOM_STRING_INTERN(vlink); + CSS_DOM_STRING_INTERN(vspace); + CSS_DOM_STRING_INTERN(width); +#undef CSS_DOM_STRING_INTERN + + return NSERROR_OK; + +error: + corestrings_fini(); + + return error; +} diff --git a/utils/corestrings.h b/utils/corestrings.h new file mode 100644 index 000000000..236c108bf --- /dev/null +++ b/utils/corestrings.h @@ -0,0 +1,101 @@ +/* + * Copyright 2012 Michael Drake + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** \file + * Useful interned string pointers (interface). + */ + +#ifndef NETSURF_UTILS_CORESTRINGS_H_ +#define NETSURF_UTILS_CORESTRINGS_H_ + +#include +#include "utils/errors.h" + +nserror corestrings_init(void); +void corestrings_fini(void); + +/* lwc_string strings */ +extern lwc_string *corestring_lwc_a; +extern lwc_string *corestring_lwc_abscenter; +extern lwc_string *corestring_lwc_absmiddle; +extern lwc_string *corestring_lwc_align; +extern lwc_string *corestring_lwc_applet; +extern lwc_string *corestring_lwc_baseline; +extern lwc_string *corestring_lwc_body; +extern lwc_string *corestring_lwc_bottom; +extern lwc_string *corestring_lwc_caption; +extern lwc_string *corestring_lwc_center; +extern lwc_string *corestring_lwc_col; +extern lwc_string *corestring_lwc_div; +extern lwc_string *corestring_lwc_embed; +extern lwc_string *corestring_lwc_font; +extern lwc_string *corestring_lwc_h1; +extern lwc_string *corestring_lwc_h2; +extern lwc_string *corestring_lwc_h3; +extern lwc_string *corestring_lwc_h4; +extern lwc_string *corestring_lwc_h5; +extern lwc_string *corestring_lwc_h6; +extern lwc_string *corestring_lwc_hr; +extern lwc_string *corestring_lwc_iframe; +extern lwc_string *corestring_lwc_img; +extern lwc_string *corestring_lwc_input; +extern lwc_string *corestring_lwc_justify; +extern lwc_string *corestring_lwc_left; +extern lwc_string *corestring_lwc_middle; +extern lwc_string *corestring_lwc_object; +extern lwc_string *corestring_lwc_p; +extern lwc_string *corestring_lwc_password; +extern lwc_string *corestring_lwc_right; +extern lwc_string *corestring_lwc_table; +extern lwc_string *corestring_lwc_tbody; +extern lwc_string *corestring_lwc_td; +extern lwc_string *corestring_lwc_text; +extern lwc_string *corestring_lwc_textarea; +extern lwc_string *corestring_lwc_texttop; +extern lwc_string *corestring_lwc_tfoot; +extern lwc_string *corestring_lwc_th; +extern lwc_string *corestring_lwc_thead; +extern lwc_string *corestring_lwc_top; +extern lwc_string *corestring_lwc_tr; + +struct dom_string; + +/* dom_string strings */ +extern struct dom_string *corestring_dom_align; +extern struct dom_string *corestring_dom_background; +extern struct dom_string *corestring_dom_bgcolor; +extern struct dom_string *corestring_dom_border; +extern struct dom_string *corestring_dom_bordercolor; +extern struct dom_string *corestring_dom_cellpadding; +extern struct dom_string *corestring_dom_cellspacing; +extern struct dom_string *corestring_dom_color; +extern struct dom_string *corestring_dom_cols; +extern struct dom_string *corestring_dom_height; +extern struct dom_string *corestring_dom_href; +extern struct dom_string *corestring_dom_hspace; +extern struct dom_string *corestring_dom_link; +extern struct dom_string *corestring_dom_rows; +extern struct dom_string *corestring_dom_size; +extern struct dom_string *corestring_dom_text; +extern struct dom_string *corestring_dom_type; +extern struct dom_string *corestring_dom_valign; +extern struct dom_string *corestring_dom_vlink; +extern struct dom_string *corestring_dom_vspace; +extern struct dom_string *corestring_dom_width; + +#endif -- cgit v1.2.3