From 1e65737c8cad643ed9591b306364a1844458fd13 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sun, 22 Jul 2012 14:06:45 +0100 Subject: Interned string cleanup, phase 1: Use lwc_string where possible in CSS handler. --- css/css.c | 286 +++++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 160 insertions(+), 126 deletions(-) (limited to 'css/css.c') diff --git a/css/css.c b/css/css.c index 98760f560..549e79fae 100644 --- a/css/css.c +++ b/css/css.c @@ -83,68 +83,72 @@ static css_error nscss_register_import(struct content_css_data *c, static lwc_string *css_charset; static css_stylesheet *blank_import; -dom_string *nscss_dom_string_a; -dom_string *nscss_dom_string_abscenter; -dom_string *nscss_dom_string_absmiddle; +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_applet; dom_string *nscss_dom_string_background; -dom_string *nscss_dom_string_baseline; dom_string *nscss_dom_string_bgcolor; -dom_string *nscss_dom_string_body; dom_string *nscss_dom_string_border; dom_string *nscss_dom_string_bordercolor; -dom_string *nscss_dom_string_bottom; -dom_string *nscss_dom_string_caption; dom_string *nscss_dom_string_cellpadding; dom_string *nscss_dom_string_cellspacing; -dom_string *nscss_dom_string_center; -dom_string *nscss_dom_string_col; dom_string *nscss_dom_string_color; dom_string *nscss_dom_string_cols; -dom_string *nscss_dom_string_div; -dom_string *nscss_dom_string_embed; -dom_string *nscss_dom_string_font; -dom_string *nscss_dom_string_h1; -dom_string *nscss_dom_string_h2; -dom_string *nscss_dom_string_h3; -dom_string *nscss_dom_string_h4; -dom_string *nscss_dom_string_h5; -dom_string *nscss_dom_string_h6; dom_string *nscss_dom_string_height; -dom_string *nscss_dom_string_hr; dom_string *nscss_dom_string_href; dom_string *nscss_dom_string_hspace; -dom_string *nscss_dom_string_iframe; -dom_string *nscss_dom_string_img; -dom_string *nscss_dom_string_input; -dom_string *nscss_dom_string_justify; -dom_string *nscss_dom_string_left; dom_string *nscss_dom_string_link; -dom_string *nscss_dom_string_middle; -dom_string *nscss_dom_string_object; -dom_string *nscss_dom_string_p; -dom_string *nscss_dom_string_password; -dom_string *nscss_dom_string_right; dom_string *nscss_dom_string_rows; dom_string *nscss_dom_string_size; -dom_string *nscss_dom_string_table; -dom_string *nscss_dom_string_tbody; -dom_string *nscss_dom_string_td; dom_string *nscss_dom_string_text; -dom_string *nscss_dom_string_textarea; -dom_string *nscss_dom_string_texttop; -dom_string *nscss_dom_string_tfoot; -dom_string *nscss_dom_string_th; -dom_string *nscss_dom_string_thead; -dom_string *nscss_dom_string_top; -dom_string *nscss_dom_string_tr; 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 * @@ -830,76 +834,88 @@ 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) \ + } while (0) - CSS_DOM_STRING_UNREF(a); - CSS_DOM_STRING_UNREF(abscenter); - CSS_DOM_STRING_UNREF(absmiddle); CSS_DOM_STRING_UNREF(align); - CSS_DOM_STRING_UNREF(applet); CSS_DOM_STRING_UNREF(background); - CSS_DOM_STRING_UNREF(baseline); CSS_DOM_STRING_UNREF(bgcolor); - CSS_DOM_STRING_UNREF(body); CSS_DOM_STRING_UNREF(border); CSS_DOM_STRING_UNREF(bordercolor); - CSS_DOM_STRING_UNREF(bottom); - CSS_DOM_STRING_UNREF(caption); CSS_DOM_STRING_UNREF(cellpadding); CSS_DOM_STRING_UNREF(cellspacing); - CSS_DOM_STRING_UNREF(center); - CSS_DOM_STRING_UNREF(col); CSS_DOM_STRING_UNREF(color); CSS_DOM_STRING_UNREF(cols); - CSS_DOM_STRING_UNREF(div); - CSS_DOM_STRING_UNREF(embed); - CSS_DOM_STRING_UNREF(font); - CSS_DOM_STRING_UNREF(h1); - CSS_DOM_STRING_UNREF(h2); - CSS_DOM_STRING_UNREF(h3); - CSS_DOM_STRING_UNREF(h4); - CSS_DOM_STRING_UNREF(h5); - CSS_DOM_STRING_UNREF(h6); CSS_DOM_STRING_UNREF(height); - CSS_DOM_STRING_UNREF(hr); CSS_DOM_STRING_UNREF(href); CSS_DOM_STRING_UNREF(hspace); - CSS_DOM_STRING_UNREF(iframe); - CSS_DOM_STRING_UNREF(img); - CSS_DOM_STRING_UNREF(input); - CSS_DOM_STRING_UNREF(justify); - CSS_DOM_STRING_UNREF(left); CSS_DOM_STRING_UNREF(link); - CSS_DOM_STRING_UNREF(middle); - CSS_DOM_STRING_UNREF(object); - CSS_DOM_STRING_UNREF(p); - CSS_DOM_STRING_UNREF(password); - CSS_DOM_STRING_UNREF(right); CSS_DOM_STRING_UNREF(rows); CSS_DOM_STRING_UNREF(size); - CSS_DOM_STRING_UNREF(table); - CSS_DOM_STRING_UNREF(tbody); - CSS_DOM_STRING_UNREF(td); CSS_DOM_STRING_UNREF(text); - CSS_DOM_STRING_UNREF(textarea); - CSS_DOM_STRING_UNREF(texttop); - CSS_DOM_STRING_UNREF(tfoot); - CSS_DOM_STRING_UNREF(th); - CSS_DOM_STRING_UNREF(thead); - CSS_DOM_STRING_UNREF(top); - CSS_DOM_STRING_UNREF(tr); 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 @@ -942,11 +958,70 @@ nserror nscss_init(void) } +#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 ); \ + 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; \ @@ -954,68 +1029,27 @@ nserror nscss_init(void) } \ } while(0) - CSS_DOM_STRING_INTERN(a); - CSS_DOM_STRING_INTERN(abscenter); - CSS_DOM_STRING_INTERN(absmiddle); CSS_DOM_STRING_INTERN(align); - CSS_DOM_STRING_INTERN(applet); CSS_DOM_STRING_INTERN(background); - CSS_DOM_STRING_INTERN(baseline); CSS_DOM_STRING_INTERN(bgcolor); - CSS_DOM_STRING_INTERN(body); CSS_DOM_STRING_INTERN(border); CSS_DOM_STRING_INTERN(bordercolor); - CSS_DOM_STRING_INTERN(bottom); - CSS_DOM_STRING_INTERN(caption); CSS_DOM_STRING_INTERN(cellpadding); CSS_DOM_STRING_INTERN(cellspacing); - CSS_DOM_STRING_INTERN(center); - CSS_DOM_STRING_INTERN(col); CSS_DOM_STRING_INTERN(color); CSS_DOM_STRING_INTERN(cols); - CSS_DOM_STRING_INTERN(div); - CSS_DOM_STRING_INTERN(embed); - CSS_DOM_STRING_INTERN(font); - CSS_DOM_STRING_INTERN(h1); - CSS_DOM_STRING_INTERN(h2); - CSS_DOM_STRING_INTERN(h3); - CSS_DOM_STRING_INTERN(h4); - CSS_DOM_STRING_INTERN(h5); - CSS_DOM_STRING_INTERN(h6); CSS_DOM_STRING_INTERN(height); - CSS_DOM_STRING_INTERN(hr); CSS_DOM_STRING_INTERN(href); CSS_DOM_STRING_INTERN(hspace); - CSS_DOM_STRING_INTERN(iframe); - CSS_DOM_STRING_INTERN(img); - CSS_DOM_STRING_INTERN(input); - CSS_DOM_STRING_INTERN(justify); - CSS_DOM_STRING_INTERN(left); CSS_DOM_STRING_INTERN(link); - CSS_DOM_STRING_INTERN(middle); - CSS_DOM_STRING_INTERN(object); - CSS_DOM_STRING_INTERN(p); - CSS_DOM_STRING_INTERN(password); - CSS_DOM_STRING_INTERN(right); CSS_DOM_STRING_INTERN(rows); CSS_DOM_STRING_INTERN(size); - CSS_DOM_STRING_INTERN(table); - CSS_DOM_STRING_INTERN(tbody); - CSS_DOM_STRING_INTERN(td); CSS_DOM_STRING_INTERN(text); - CSS_DOM_STRING_INTERN(textarea); - CSS_DOM_STRING_INTERN(texttop); - CSS_DOM_STRING_INTERN(tfoot); - CSS_DOM_STRING_INTERN(th); - CSS_DOM_STRING_INTERN(thead); - CSS_DOM_STRING_INTERN(top); - CSS_DOM_STRING_INTERN(tr); 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", -- cgit v1.2.3