diff options
author | Vincent Sanders <vince@kyllikki.org> | 2017-03-19 14:27:05 +0000 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2017-03-19 14:27:05 +0000 |
commit | 6fb654d35634c01344fae8ace5ef6d340cdafd17 (patch) | |
tree | 3a51071a29fe7deedfed3cb1bab4ca273b961a88 /utils/corestrings.c | |
parent | eb5e5ff48636cd4a63f9517087490c296cde9c69 (diff) | |
download | netsurf-6fb654d35634c01344fae8ace5ef6d340cdafd17.tar.gz netsurf-6fb654d35634c01344fae8ace5ef6d340cdafd17.tar.bz2 |
rework corestring implementation
This removes special casing for some strings and importantly the
multiple huge lists of variables in code.
Diffstat (limited to 'utils/corestrings.c')
-rw-r--r-- | utils/corestrings.c | 943 |
1 files changed, 54 insertions, 889 deletions
diff --git a/utils/corestrings.c b/utils/corestrings.c index 87a342313..d8934b739 100644 --- a/utils/corestrings.c +++ b/utils/corestrings.c @@ -16,8 +16,9 @@ * along with this program. If not, see <http://www.gnu.org/licenses/>. */ -/** \file - * Useful interned string pointers (implementation). +/** + * \file + * Useful interned string tables implementation. */ #include <dom/dom.h> @@ -26,280 +27,19 @@ #include "utils/nsurl.h" #include "utils/utils.h" -/* lwc_string strings */ -lwc_string *corestring_lwc_a; -lwc_string *corestring_lwc_about; -lwc_string *corestring_lwc_abscenter; -lwc_string *corestring_lwc_absmiddle; -lwc_string *corestring_lwc_align; -lwc_string *corestring_lwc_applet; -lwc_string *corestring_lwc_base; -lwc_string *corestring_lwc_baseline; -lwc_string *corestring_lwc_body; -lwc_string *corestring_lwc_bottom; -lwc_string *corestring_lwc_button; -lwc_string *corestring_lwc_caption; -lwc_string *corestring_lwc_center; -lwc_string *corestring_lwc_charset; -lwc_string *corestring_lwc_checkbox; -lwc_string *corestring_lwc_circle; -lwc_string *corestring_lwc_col; -lwc_string *corestring_lwc_data; -lwc_string *corestring_lwc_default; -lwc_string *corestring_lwc_div; -lwc_string *corestring_lwc_embed; -lwc_string *corestring_lwc_file; -lwc_string *corestring_lwc_filename; -lwc_string *corestring_lwc_font; -lwc_string *corestring_lwc_frame; -lwc_string *corestring_lwc_frameset; -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_head; -lwc_string *corestring_lwc_hidden; -lwc_string *corestring_lwc_hr; -lwc_string *corestring_lwc_html; -lwc_string *corestring_lwc_http; -lwc_string *corestring_lwc_https; -lwc_string *corestring_lwc_icon; -lwc_string *corestring_lwc_iframe; -lwc_string *corestring_lwc_image; -lwc_string *corestring_lwc_img; -lwc_string *corestring_lwc_input; -lwc_string *corestring_lwc_javascript; -lwc_string *corestring_lwc_justify; -lwc_string *corestring_lwc_left; -lwc_string *corestring_lwc_li; -lwc_string *corestring_lwc_link; -lwc_string *corestring_lwc_mailto; -lwc_string *corestring_lwc_meta; -lwc_string *corestring_lwc_middle; -lwc_string *corestring_lwc_multipart_form_data; -lwc_string *corestring_lwc_no; -lwc_string *corestring_lwc_noscript; -lwc_string *corestring_lwc_object; -lwc_string *corestring_lwc_optgroup; -lwc_string *corestring_lwc_option; -lwc_string *corestring_lwc_p; -lwc_string *corestring_lwc_param; -lwc_string *corestring_lwc_password; -lwc_string *corestring_lwc_poly; -lwc_string *corestring_lwc_polygon; -lwc_string *corestring_lwc_post; -lwc_string *corestring_lwc_radio; -lwc_string *corestring_lwc_rect; -lwc_string *corestring_lwc_rectangle; -lwc_string *corestring_lwc_refresh; -lwc_string *corestring_lwc_reset; -lwc_string *corestring_lwc_resource; -lwc_string *corestring_lwc_right; -lwc_string *corestring_lwc_search; -lwc_string *corestring_lwc_select; -lwc_string *corestring_lwc_shortcut_icon; -lwc_string *corestring_lwc_src; -lwc_string *corestring_lwc_style; -lwc_string *corestring_lwc_submit; -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_text_css; -lwc_string *corestring_lwc_tfoot; -lwc_string *corestring_lwc_th; -lwc_string *corestring_lwc_thead; -lwc_string *corestring_lwc_title; -lwc_string *corestring_lwc_top; -lwc_string *corestring_lwc_tr; -lwc_string *corestring_lwc_ul; -lwc_string *corestring_lwc_url; -lwc_string *corestring_lwc_yes; -lwc_string *corestring_lwc__blank; -lwc_string *corestring_lwc__parent; -lwc_string *corestring_lwc__self; -lwc_string *corestring_lwc__top; -lwc_string *corestring_lwc_slash_; - -/* dom_string strings */ -dom_string *corestring_dom_a; -dom_string *corestring_dom_alt; -dom_string *corestring_dom_abort; -dom_string *corestring_dom_afterprint; -dom_string *corestring_dom_align; -dom_string *corestring_dom_area; -dom_string *corestring_dom_async; -dom_string *corestring_dom_background; -dom_string *corestring_dom_beforeprint; -dom_string *corestring_dom_beforeunload; -dom_string *corestring_dom_bgcolor; -dom_string *corestring_dom_blur; -dom_string *corestring_dom_border; -dom_string *corestring_dom_bordercolor; -dom_string *corestring_dom_cancel; -dom_string *corestring_dom_canplay; -dom_string *corestring_dom_canplaythrough; -dom_string *corestring_dom_cellpadding; -dom_string *corestring_dom_cellspacing; -dom_string *corestring_dom_change; -dom_string *corestring_dom_charset; -dom_string *corestring_dom_class; -dom_string *corestring_dom_classid; -dom_string *corestring_dom_click; -dom_string *corestring_dom_close; -dom_string *corestring_dom_codebase; -dom_string *corestring_dom_color; -dom_string *corestring_dom_cols; -dom_string *corestring_dom_colspan; -dom_string *corestring_dom_content; -dom_string *corestring_dom_contextmenu; -dom_string *corestring_dom_coords; -dom_string *corestring_dom_cuechange; -dom_string *corestring_dom_data; -dom_string *corestring_dom_dblclick; -dom_string *corestring_dom_defer; -dom_string *corestring_dom_DOMAttrModified; -dom_string *corestring_dom_DOMNodeInserted; -dom_string *corestring_dom_DOMNodeInsertedIntoDocument; -dom_string *corestring_dom_DOMSubtreeModified; -dom_string *corestring_dom_drag; -dom_string *corestring_dom_dragend; -dom_string *corestring_dom_dragenter; -dom_string *corestring_dom_dragleave; -dom_string *corestring_dom_dragover; -dom_string *corestring_dom_dragstart; -dom_string *corestring_dom_drop; -dom_string *corestring_dom_durationchange; -dom_string *corestring_dom_emptied; -dom_string *corestring_dom_ended; -dom_string *corestring_dom_error; -dom_string *corestring_dom_focus; -dom_string *corestring_dom_frameborder; -dom_string *corestring_dom_hashchange; -dom_string *corestring_dom_height; -dom_string *corestring_dom_href; -dom_string *corestring_dom_hreflang; -dom_string *corestring_dom_hspace; -dom_string *corestring_dom_http_equiv; -dom_string *corestring_dom_id; -dom_string *corestring_dom_input; -dom_string *corestring_dom_invalid; -dom_string *corestring_dom_keydown; -dom_string *corestring_dom_keypress; -dom_string *corestring_dom_keyup; -dom_string *corestring_dom_link; -dom_string *corestring_dom_load; -dom_string *corestring_dom_loadeddata; -dom_string *corestring_dom_loadedmetadata; -dom_string *corestring_dom_loadstart; -dom_string *corestring_dom_map; -dom_string *corestring_dom_marginheight; -dom_string *corestring_dom_marginwidth; -dom_string *corestring_dom_media; -dom_string *corestring_dom_message; -dom_string *corestring_dom_mousedown; -dom_string *corestring_dom_mousemove; -dom_string *corestring_dom_mouseout; -dom_string *corestring_dom_mouseover; -dom_string *corestring_dom_mouseup; -dom_string *corestring_dom_mousewheel; -dom_string *corestring_dom_name; -dom_string *corestring_dom_nohref; -dom_string *corestring_dom_noresize; -dom_string *corestring_dom_nowrap; -dom_string *corestring_dom_offline; -dom_string *corestring_dom_online; -dom_string *corestring_dom_pagehide; -dom_string *corestring_dom_pageshow; -dom_string *corestring_dom_pause; -dom_string *corestring_dom_play; -dom_string *corestring_dom_playing; -dom_string *corestring_dom_popstate; -dom_string *corestring_dom_progress; -dom_string *corestring_dom_ratechange; -dom_string *corestring_dom_readystatechange; -dom_string *corestring_dom_rect; -dom_string *corestring_dom_rel; -dom_string *corestring_dom_reset; -dom_string *corestring_dom_resize; -dom_string *corestring_dom_rows; -dom_string *corestring_dom_rowspan; -dom_string *corestring_dom_scroll; -dom_string *corestring_dom_scrolling; -dom_string *corestring_dom_seeked; -dom_string *corestring_dom_seeking; -dom_string *corestring_dom_select; -dom_string *corestring_dom_selected; -dom_string *corestring_dom_shape; -dom_string *corestring_dom_show; -dom_string *corestring_dom_size; -dom_string *corestring_dom_sizes; -dom_string *corestring_dom_src; -dom_string *corestring_dom_stalled; -dom_string *corestring_dom_storage; -dom_string *corestring_dom_style; -dom_string *corestring_dom_submit; -dom_string *corestring_dom_suspend; -dom_string *corestring_dom_target; -dom_string *corestring_dom_text; -dom_string *corestring_dom_text_javascript; -dom_string *corestring_dom_timeupdate; -dom_string *corestring_dom_title; -dom_string *corestring_dom_type; -dom_string *corestring_dom_unload; -dom_string *corestring_dom_valign; -dom_string *corestring_dom_value; -dom_string *corestring_dom_vlink; -dom_string *corestring_dom_volumechange; -dom_string *corestring_dom_vspace; -dom_string *corestring_dom_waiting; -dom_string *corestring_dom_width; -dom_string *corestring_dom_BUTTON; -dom_string *corestring_dom_INPUT; -dom_string *corestring_dom_SELECT; -dom_string *corestring_dom_TEXTAREA; -dom_string *corestring_dom_BODY; -dom_string *corestring_dom_HEAD; -dom_string *corestring_dom_html_namespace; -dom_string *corestring_dom_button; -dom_string *corestring_dom_image; -dom_string *corestring_dom_radio; -dom_string *corestring_dom_checkbox; -dom_string *corestring_dom_file; -dom_string *corestring_dom_on; -dom_string *corestring_dom_onblur; -dom_string *corestring_dom_onerror; -dom_string *corestring_dom_onfocus; -dom_string *corestring_dom_onload; -dom_string *corestring_dom_onresize; -dom_string *corestring_dom_onscroll; -dom_string *corestring_dom_autocomplete; -dom_string *corestring_dom_autocompleteerror; -dom_string *corestring_dom_dragexit; -dom_string *corestring_dom_mouseenter; -dom_string *corestring_dom_mouseleave; -dom_string *corestring_dom_wheel; -dom_string *corestring_dom_sort; -dom_string *corestring_dom_toggle; -dom_string *corestring_dom___ns_key_box_node_data; -dom_string *corestring_dom___ns_key_libcss_node_data; -dom_string *corestring_dom___ns_key_file_name_node_data; -dom_string *corestring_dom___ns_key_image_coords_node_data; -dom_string *corestring_dom___ns_key_html_content_data; - -/* nsurl URLs */ -nsurl *corestring_nsurl_about_blank; - -/* - * Free the core strings - */ -void corestrings_fini(void) +/* define corestrings */ +#define CORESTRING_LWC_VALUE(NAME,VALUE) lwc_string *corestring_lwc_##NAME +#define CORESTRING_DOM_VALUE(NAME,VALUE) dom_string *corestring_dom_##NAME +#define CORESTRING_NSURL(NAME,VALUE) nsurl *corestring_nsurl_##NAME +#include "utils/corestringlist.h" +#undef CORESTRING_LWC_VALUE +#undef CORESTRING_DOM_VALUE +#undef CORESTRING_NSURL + +/* exported interface documented in utils/corestrings.h */ +nserror corestrings_fini(void) { -#define CSS_LWC_STRING_UNREF(NAME) \ +#define CORESTRING_LWC_VALUE(NAME,VALUE) \ do { \ if (corestring_lwc_##NAME != NULL) { \ lwc_string_unref(corestring_lwc_##NAME); \ @@ -307,107 +47,7 @@ void corestrings_fini(void) } \ } while (0) - CSS_LWC_STRING_UNREF(a); - CSS_LWC_STRING_UNREF(about); - CSS_LWC_STRING_UNREF(abscenter); - CSS_LWC_STRING_UNREF(absmiddle); - CSS_LWC_STRING_UNREF(align); - CSS_LWC_STRING_UNREF(applet); - CSS_LWC_STRING_UNREF(base); - CSS_LWC_STRING_UNREF(baseline); - CSS_LWC_STRING_UNREF(body); - CSS_LWC_STRING_UNREF(bottom); - CSS_LWC_STRING_UNREF(button); - CSS_LWC_STRING_UNREF(caption); - CSS_LWC_STRING_UNREF(charset); - CSS_LWC_STRING_UNREF(center); - CSS_LWC_STRING_UNREF(checkbox); - CSS_LWC_STRING_UNREF(circle); - CSS_LWC_STRING_UNREF(col); - CSS_LWC_STRING_UNREF(data); - CSS_LWC_STRING_UNREF(default); - CSS_LWC_STRING_UNREF(div); - CSS_LWC_STRING_UNREF(embed); - CSS_LWC_STRING_UNREF(file); - CSS_LWC_STRING_UNREF(filename); - CSS_LWC_STRING_UNREF(font); - CSS_LWC_STRING_UNREF(frame); - CSS_LWC_STRING_UNREF(frameset); - 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(head); - CSS_LWC_STRING_UNREF(hidden); - CSS_LWC_STRING_UNREF(hr); - CSS_LWC_STRING_UNREF(html); - CSS_LWC_STRING_UNREF(http); - CSS_LWC_STRING_UNREF(https); - CSS_LWC_STRING_UNREF(icon); - CSS_LWC_STRING_UNREF(iframe); - CSS_LWC_STRING_UNREF(image); - CSS_LWC_STRING_UNREF(img); - CSS_LWC_STRING_UNREF(input); - CSS_LWC_STRING_UNREF(javascript); - CSS_LWC_STRING_UNREF(justify); - CSS_LWC_STRING_UNREF(left); - CSS_LWC_STRING_UNREF(li); - CSS_LWC_STRING_UNREF(link); - CSS_LWC_STRING_UNREF(mailto); - CSS_LWC_STRING_UNREF(meta); - CSS_LWC_STRING_UNREF(middle); - CSS_LWC_STRING_UNREF(multipart_form_data); - CSS_LWC_STRING_UNREF(no); - CSS_LWC_STRING_UNREF(noscript); - CSS_LWC_STRING_UNREF(object); - CSS_LWC_STRING_UNREF(optgroup); - CSS_LWC_STRING_UNREF(option); - CSS_LWC_STRING_UNREF(p); - CSS_LWC_STRING_UNREF(param); - CSS_LWC_STRING_UNREF(password); - CSS_LWC_STRING_UNREF(poly); - CSS_LWC_STRING_UNREF(polygon); - CSS_LWC_STRING_UNREF(post); - CSS_LWC_STRING_UNREF(radio); - CSS_LWC_STRING_UNREF(rect); - CSS_LWC_STRING_UNREF(rectangle); - CSS_LWC_STRING_UNREF(refresh); - CSS_LWC_STRING_UNREF(reset); - CSS_LWC_STRING_UNREF(resource); - CSS_LWC_STRING_UNREF(right); - CSS_LWC_STRING_UNREF(search); - CSS_LWC_STRING_UNREF(select); - CSS_LWC_STRING_UNREF(shortcut_icon); - CSS_LWC_STRING_UNREF(src); - CSS_LWC_STRING_UNREF(style); - CSS_LWC_STRING_UNREF(submit); - 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(text_css); - CSS_LWC_STRING_UNREF(tfoot); - CSS_LWC_STRING_UNREF(th); - CSS_LWC_STRING_UNREF(thead); - CSS_LWC_STRING_UNREF(title); - CSS_LWC_STRING_UNREF(top); - CSS_LWC_STRING_UNREF(tr); - CSS_LWC_STRING_UNREF(ul); - CSS_LWC_STRING_UNREF(url); - CSS_LWC_STRING_UNREF(yes); - CSS_LWC_STRING_UNREF(_blank); - CSS_LWC_STRING_UNREF(_parent); - CSS_LWC_STRING_UNREF(_self); - CSS_LWC_STRING_UNREF(_top); - CSS_LWC_STRING_UNREF(slash_); - -#undef CSS_LWC_STRING_UNREF - -#define CSS_DOM_STRING_UNREF(NAME) \ +#define CORESTRING_DOM_VALUE(NAME,VALUE) \ do { \ if (corestring_dom_##NAME != NULL) { \ dom_string_unref(corestring_dom_##NAME); \ @@ -415,547 +55,72 @@ void corestrings_fini(void) } \ } while (0) - CSS_DOM_STRING_UNREF(a); - CSS_DOM_STRING_UNREF(abort); - CSS_DOM_STRING_UNREF(afterprint); - CSS_DOM_STRING_UNREF(align); - CSS_DOM_STRING_UNREF(alt); - CSS_DOM_STRING_UNREF(area); - CSS_DOM_STRING_UNREF(async); - CSS_DOM_STRING_UNREF(background); - CSS_DOM_STRING_UNREF(beforeprint); - CSS_DOM_STRING_UNREF(beforeunload); - CSS_DOM_STRING_UNREF(bgcolor); - CSS_DOM_STRING_UNREF(blur); - CSS_DOM_STRING_UNREF(border); - CSS_DOM_STRING_UNREF(bordercolor); - CSS_DOM_STRING_UNREF(cancel); - CSS_DOM_STRING_UNREF(canplay); - CSS_DOM_STRING_UNREF(canplaythrough); - CSS_DOM_STRING_UNREF(cellpadding); - CSS_DOM_STRING_UNREF(cellspacing); - CSS_DOM_STRING_UNREF(change); - CSS_DOM_STRING_UNREF(charset); - CSS_DOM_STRING_UNREF(class); - CSS_DOM_STRING_UNREF(classid); - CSS_DOM_STRING_UNREF(click); - CSS_DOM_STRING_UNREF(close); - CSS_DOM_STRING_UNREF(codebase); - CSS_DOM_STRING_UNREF(color); - CSS_DOM_STRING_UNREF(cols); - CSS_DOM_STRING_UNREF(colspan); - CSS_DOM_STRING_UNREF(content); - CSS_DOM_STRING_UNREF(contextmenu); - CSS_DOM_STRING_UNREF(coords); - CSS_DOM_STRING_UNREF(cuechange); - CSS_DOM_STRING_UNREF(data); - CSS_DOM_STRING_UNREF(dblclick); - CSS_DOM_STRING_UNREF(defer); - CSS_DOM_STRING_UNREF(DOMAttrModified); - CSS_DOM_STRING_UNREF(DOMNodeInserted); - CSS_DOM_STRING_UNREF(DOMNodeInsertedIntoDocument); - CSS_DOM_STRING_UNREF(DOMSubtreeModified); - CSS_DOM_STRING_UNREF(drag); - CSS_DOM_STRING_UNREF(dragend); - CSS_DOM_STRING_UNREF(dragenter); - CSS_DOM_STRING_UNREF(dragleave); - CSS_DOM_STRING_UNREF(dragover); - CSS_DOM_STRING_UNREF(dragstart); - CSS_DOM_STRING_UNREF(drop); - CSS_DOM_STRING_UNREF(durationchange); - CSS_DOM_STRING_UNREF(emptied); - CSS_DOM_STRING_UNREF(ended); - CSS_DOM_STRING_UNREF(error); - CSS_DOM_STRING_UNREF(focus); - CSS_DOM_STRING_UNREF(frameborder); - CSS_DOM_STRING_UNREF(hashchange); - CSS_DOM_STRING_UNREF(height); - CSS_DOM_STRING_UNREF(href); - CSS_DOM_STRING_UNREF(hreflang); - CSS_DOM_STRING_UNREF(hspace); - CSS_DOM_STRING_UNREF(http_equiv); - CSS_DOM_STRING_UNREF(id); - CSS_DOM_STRING_UNREF(input); - CSS_DOM_STRING_UNREF(invalid); - CSS_DOM_STRING_UNREF(keydown); - CSS_DOM_STRING_UNREF(keypress); - CSS_DOM_STRING_UNREF(keyup); - CSS_DOM_STRING_UNREF(link); - CSS_DOM_STRING_UNREF(load); - CSS_DOM_STRING_UNREF(loadeddata); - CSS_DOM_STRING_UNREF(loadedmetadata); - CSS_DOM_STRING_UNREF(loadstart); - CSS_DOM_STRING_UNREF(map); - CSS_DOM_STRING_UNREF(marginheight); - CSS_DOM_STRING_UNREF(marginwidth); - CSS_DOM_STRING_UNREF(media); - CSS_DOM_STRING_UNREF(message); - CSS_DOM_STRING_UNREF(mousedown); - CSS_DOM_STRING_UNREF(mousemove); - CSS_DOM_STRING_UNREF(mouseout); - CSS_DOM_STRING_UNREF(mouseover); - CSS_DOM_STRING_UNREF(mouseup); - CSS_DOM_STRING_UNREF(mousewheel); - CSS_DOM_STRING_UNREF(name); - CSS_DOM_STRING_UNREF(nohref); - CSS_DOM_STRING_UNREF(noresize); - CSS_DOM_STRING_UNREF(nowrap); - CSS_DOM_STRING_UNREF(offline); - CSS_DOM_STRING_UNREF(online); - CSS_DOM_STRING_UNREF(pagehide); - CSS_DOM_STRING_UNREF(pageshow); - CSS_DOM_STRING_UNREF(pause); - CSS_DOM_STRING_UNREF(play); - CSS_DOM_STRING_UNREF(playing); - CSS_DOM_STRING_UNREF(popstate); - CSS_DOM_STRING_UNREF(progress); - CSS_DOM_STRING_UNREF(ratechange); - CSS_DOM_STRING_UNREF(readystatechange); - CSS_DOM_STRING_UNREF(rect); - CSS_DOM_STRING_UNREF(rel); - CSS_DOM_STRING_UNREF(reset); - CSS_DOM_STRING_UNREF(resize); - CSS_DOM_STRING_UNREF(rows); - CSS_DOM_STRING_UNREF(rowspan); - CSS_DOM_STRING_UNREF(scroll); - CSS_DOM_STRING_UNREF(scrolling); - CSS_DOM_STRING_UNREF(seeked); - CSS_DOM_STRING_UNREF(seeking); - CSS_DOM_STRING_UNREF(select); - CSS_DOM_STRING_UNREF(selected); - CSS_DOM_STRING_UNREF(shape); - CSS_DOM_STRING_UNREF(show); - CSS_DOM_STRING_UNREF(size); - CSS_DOM_STRING_UNREF(sizes); - CSS_DOM_STRING_UNREF(src); - CSS_DOM_STRING_UNREF(stalled); - CSS_DOM_STRING_UNREF(storage); - CSS_DOM_STRING_UNREF(style); - CSS_DOM_STRING_UNREF(submit); - CSS_DOM_STRING_UNREF(suspend); - CSS_DOM_STRING_UNREF(target); - CSS_DOM_STRING_UNREF(text); - CSS_DOM_STRING_UNREF(text_javascript); - CSS_DOM_STRING_UNREF(timeupdate); - CSS_DOM_STRING_UNREF(title); - CSS_DOM_STRING_UNREF(type); - CSS_DOM_STRING_UNREF(unload); - CSS_DOM_STRING_UNREF(valign); - CSS_DOM_STRING_UNREF(value); - CSS_DOM_STRING_UNREF(vlink); - CSS_DOM_STRING_UNREF(volumechange); - CSS_DOM_STRING_UNREF(vspace); - CSS_DOM_STRING_UNREF(waiting); - CSS_DOM_STRING_UNREF(width); - /* DOM node names, not really CSS */ - CSS_DOM_STRING_UNREF(BUTTON); - CSS_DOM_STRING_UNREF(INPUT); - CSS_DOM_STRING_UNREF(SELECT); - CSS_DOM_STRING_UNREF(TEXTAREA); - CSS_DOM_STRING_UNREF(BODY); - CSS_DOM_STRING_UNREF(HEAD); - /* DOM namespaces, not really CSS */ - CSS_DOM_STRING_UNREF(html_namespace); - /* DOM input types, not really CSS */ - CSS_DOM_STRING_UNREF(button); - CSS_DOM_STRING_UNREF(image); - CSS_DOM_STRING_UNREF(radio); - CSS_DOM_STRING_UNREF(checkbox); - CSS_DOM_STRING_UNREF(file); - /* DOM event prefix */ - CSS_DOM_STRING_UNREF(on); - /* DOM events forwarded from body to window */ - CSS_DOM_STRING_UNREF(onblur); - CSS_DOM_STRING_UNREF(onerror); - CSS_DOM_STRING_UNREF(onfocus); - CSS_DOM_STRING_UNREF(onload); - CSS_DOM_STRING_UNREF(onresize); - CSS_DOM_STRING_UNREF(onscroll); - /* Corestrings used by DOM event registration */ - CSS_DOM_STRING_UNREF(autocomplete); - CSS_DOM_STRING_UNREF(autocompleteerror); - CSS_DOM_STRING_UNREF(dragexit); - CSS_DOM_STRING_UNREF(mouseenter); - CSS_DOM_STRING_UNREF(mouseleave); - CSS_DOM_STRING_UNREF(wheel); - CSS_DOM_STRING_UNREF(sort); - CSS_DOM_STRING_UNREF(toggle); - /* DOM userdata keys, not really CSS */ - CSS_DOM_STRING_UNREF(__ns_key_box_node_data); - CSS_DOM_STRING_UNREF(__ns_key_libcss_node_data); - CSS_DOM_STRING_UNREF(__ns_key_file_name_node_data); - CSS_DOM_STRING_UNREF(__ns_key_image_coords_node_data); - CSS_DOM_STRING_UNREF(__ns_key_html_content_data); -#undef CSS_DOM_STRING_UNREF +#define CORESTRING_NSURL(NAME,VALUE) \ + do { \ + if (corestring_nsurl_##NAME != NULL) { \ + nsurl_unref(corestring_nsurl_##NAME); \ + corestring_nsurl_##NAME = NULL; \ + } \ + } while (0) + + +#include "utils/corestringlist.h" - /* nsurl URLs */ - if (corestring_nsurl_about_blank != NULL) { - nsurl_unref(corestring_nsurl_about_blank); - corestring_nsurl_about_blank = NULL; - } +#undef CORESTRING_LWC_VALUE +#undef CORESTRING_DOM_VALUE +#undef CORESTRING_NSURL + + return NSERROR_OK; } -/* - * Create the core strings - */ +/* exported interface documented in utils/corestrings.h */ nserror corestrings_init(void) { lwc_error lerror; nserror error; dom_exception exc; -#define CSS_LWC_STRING_INTERN(NAME) \ +#define CORESTRING_LWC_VALUE(NAME,VALUE) \ do { \ lerror = lwc_intern_string( \ - (const char *)#NAME, \ - sizeof(#NAME) - 1, \ - &corestring_lwc_##NAME ); \ - if ((lerror != lwc_error_ok) || \ - (corestring_lwc_##NAME == NULL)) { \ + (const char *)VALUE, \ + sizeof(VALUE) - 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(about); - CSS_LWC_STRING_INTERN(abscenter); - CSS_LWC_STRING_INTERN(absmiddle); - CSS_LWC_STRING_INTERN(align); - CSS_LWC_STRING_INTERN(applet); - CSS_LWC_STRING_INTERN(base); - CSS_LWC_STRING_INTERN(baseline); - CSS_LWC_STRING_INTERN(body); - CSS_LWC_STRING_INTERN(bottom); - CSS_LWC_STRING_INTERN(button); - CSS_LWC_STRING_INTERN(caption); - CSS_LWC_STRING_INTERN(charset); - CSS_LWC_STRING_INTERN(center); - CSS_LWC_STRING_INTERN(checkbox); - CSS_LWC_STRING_INTERN(circle); - CSS_LWC_STRING_INTERN(col); - CSS_LWC_STRING_INTERN(data); - CSS_LWC_STRING_INTERN(default); - CSS_LWC_STRING_INTERN(div); - CSS_LWC_STRING_INTERN(embed); - CSS_LWC_STRING_INTERN(file); - CSS_LWC_STRING_INTERN(filename); - CSS_LWC_STRING_INTERN(font); - CSS_LWC_STRING_INTERN(frame); - CSS_LWC_STRING_INTERN(frameset); - 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(head); - CSS_LWC_STRING_INTERN(hidden); - CSS_LWC_STRING_INTERN(hr); - CSS_LWC_STRING_INTERN(html); - CSS_LWC_STRING_INTERN(http); - CSS_LWC_STRING_INTERN(https); - CSS_LWC_STRING_INTERN(icon); - CSS_LWC_STRING_INTERN(iframe); - CSS_LWC_STRING_INTERN(image); - CSS_LWC_STRING_INTERN(img); - CSS_LWC_STRING_INTERN(input); - CSS_LWC_STRING_INTERN(javascript); - CSS_LWC_STRING_INTERN(justify); - CSS_LWC_STRING_INTERN(left); - CSS_LWC_STRING_INTERN(li); - CSS_LWC_STRING_INTERN(link); - CSS_LWC_STRING_INTERN(mailto); - CSS_LWC_STRING_INTERN(meta); - CSS_LWC_STRING_INTERN(middle); - CSS_LWC_STRING_INTERN(no); - CSS_LWC_STRING_INTERN(noscript); - CSS_LWC_STRING_INTERN(object); - CSS_LWC_STRING_INTERN(optgroup); - CSS_LWC_STRING_INTERN(option); - CSS_LWC_STRING_INTERN(p); - CSS_LWC_STRING_INTERN(param); - CSS_LWC_STRING_INTERN(password); - CSS_LWC_STRING_INTERN(poly); - CSS_LWC_STRING_INTERN(polygon); - CSS_LWC_STRING_INTERN(post); - CSS_LWC_STRING_INTERN(radio); - CSS_LWC_STRING_INTERN(rect); - CSS_LWC_STRING_INTERN(rectangle); - CSS_LWC_STRING_INTERN(refresh); - CSS_LWC_STRING_INTERN(reset); - CSS_LWC_STRING_INTERN(resource); - CSS_LWC_STRING_INTERN(right); - CSS_LWC_STRING_INTERN(search); - CSS_LWC_STRING_INTERN(select); - CSS_LWC_STRING_INTERN(src); - CSS_LWC_STRING_INTERN(style); - CSS_LWC_STRING_INTERN(submit); - 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(title); - CSS_LWC_STRING_INTERN(top); - CSS_LWC_STRING_INTERN(tr); - CSS_LWC_STRING_INTERN(ul); - CSS_LWC_STRING_INTERN(url); - CSS_LWC_STRING_INTERN(yes); - CSS_LWC_STRING_INTERN(_blank); - CSS_LWC_STRING_INTERN(_parent); - CSS_LWC_STRING_INTERN(_self); - CSS_LWC_STRING_INTERN(_top); -#undef CSS_LWC_STRING_INTERN - - - lerror = lwc_intern_string("multipart/form-data", - SLEN("multipart/form-data"), - &corestring_lwc_multipart_form_data); - if ((lerror != lwc_error_ok) || - (corestring_lwc_multipart_form_data == NULL)) { - error = NSERROR_NOMEM; - goto error; - } - - lerror = lwc_intern_string("shortcut icon", SLEN("shortcut icon"), - &corestring_lwc_shortcut_icon); - if ((lerror != lwc_error_ok) || (corestring_lwc_shortcut_icon == NULL)) { - error = NSERROR_NOMEM; - goto error; - } - - lerror = lwc_intern_string("text/css", SLEN("text/css"), - &corestring_lwc_text_css); - if ((lerror != lwc_error_ok) || (corestring_lwc_text_css == NULL)) { - error = NSERROR_NOMEM; - goto error; - } - - lerror = lwc_intern_string("/", SLEN("/"), - &corestring_lwc_slash_); - if ((lerror != lwc_error_ok) || (corestring_lwc_slash_ == NULL)) { - error = NSERROR_NOMEM; - goto error; - } - - -#define CSS_DOM_STRING_INTERN(NAME) \ +#define CORESTRING_DOM_VALUE(NAME,VALUE) \ do { \ exc = dom_string_create_interned( \ - (const uint8_t *)#NAME, \ - sizeof(#NAME) - 1, \ + (const uint8_t *)VALUE, \ + sizeof(VALUE) - 1, \ &corestring_dom_##NAME ); \ - if ((exc != DOM_NO_ERR) || \ + if ((exc != DOM_NO_ERR) || \ (corestring_dom_##NAME == NULL)) { \ error = NSERROR_NOMEM; \ goto error; \ } \ } while(0) - CSS_DOM_STRING_INTERN(a); - CSS_DOM_STRING_INTERN(abort); - CSS_DOM_STRING_INTERN(afterprint); - CSS_DOM_STRING_INTERN(align); - CSS_DOM_STRING_INTERN(alt); - CSS_DOM_STRING_INTERN(area); - CSS_DOM_STRING_INTERN(async); - CSS_DOM_STRING_INTERN(background); - CSS_DOM_STRING_INTERN(beforeprint); - CSS_DOM_STRING_INTERN(beforeunload); - CSS_DOM_STRING_INTERN(bgcolor); - CSS_DOM_STRING_INTERN(blur); - CSS_DOM_STRING_INTERN(border); - CSS_DOM_STRING_INTERN(bordercolor); - CSS_DOM_STRING_INTERN(cancel); - CSS_DOM_STRING_INTERN(canplay); - CSS_DOM_STRING_INTERN(canplaythrough); - CSS_DOM_STRING_INTERN(cellpadding); - CSS_DOM_STRING_INTERN(cellspacing); - CSS_DOM_STRING_INTERN(change); - CSS_DOM_STRING_INTERN(charset); - CSS_DOM_STRING_INTERN(class); - CSS_DOM_STRING_INTERN(classid); - CSS_DOM_STRING_INTERN(click); - CSS_DOM_STRING_INTERN(close); - CSS_DOM_STRING_INTERN(codebase); - CSS_DOM_STRING_INTERN(color); - CSS_DOM_STRING_INTERN(cols); - CSS_DOM_STRING_INTERN(colspan); - CSS_DOM_STRING_INTERN(content); - CSS_DOM_STRING_INTERN(contextmenu); - CSS_DOM_STRING_INTERN(coords); - CSS_DOM_STRING_INTERN(cuechange); - CSS_DOM_STRING_INTERN(data); - CSS_DOM_STRING_INTERN(dblclick); - CSS_DOM_STRING_INTERN(defer); - CSS_DOM_STRING_INTERN(DOMAttrModified); - CSS_DOM_STRING_INTERN(DOMNodeInserted); - CSS_DOM_STRING_INTERN(DOMNodeInsertedIntoDocument); - CSS_DOM_STRING_INTERN(DOMSubtreeModified); - CSS_DOM_STRING_INTERN(drag); - CSS_DOM_STRING_INTERN(dragend); - CSS_DOM_STRING_INTERN(dragenter); - CSS_DOM_STRING_INTERN(dragleave); - CSS_DOM_STRING_INTERN(dragover); - CSS_DOM_STRING_INTERN(dragstart); - CSS_DOM_STRING_INTERN(drop); - CSS_DOM_STRING_INTERN(durationchange); - CSS_DOM_STRING_INTERN(emptied); - CSS_DOM_STRING_INTERN(ended); - CSS_DOM_STRING_INTERN(error); - CSS_DOM_STRING_INTERN(focus); - CSS_DOM_STRING_INTERN(frameborder); - CSS_DOM_STRING_INTERN(hashchange); - CSS_DOM_STRING_INTERN(height); - CSS_DOM_STRING_INTERN(href); - CSS_DOM_STRING_INTERN(hreflang); - CSS_DOM_STRING_INTERN(hspace); - /* http-equiv: see below */ - CSS_DOM_STRING_INTERN(id); - CSS_DOM_STRING_INTERN(input); - CSS_DOM_STRING_INTERN(invalid); - CSS_DOM_STRING_INTERN(keydown); - CSS_DOM_STRING_INTERN(keypress); - CSS_DOM_STRING_INTERN(keyup); - CSS_DOM_STRING_INTERN(link); - CSS_DOM_STRING_INTERN(load); - CSS_DOM_STRING_INTERN(loadeddata); - CSS_DOM_STRING_INTERN(loadedmetadata); - CSS_DOM_STRING_INTERN(loadstart); - CSS_DOM_STRING_INTERN(map); - CSS_DOM_STRING_INTERN(marginheight); - CSS_DOM_STRING_INTERN(marginwidth); - CSS_DOM_STRING_INTERN(media); - CSS_DOM_STRING_INTERN(message); - CSS_DOM_STRING_INTERN(mousedown); - CSS_DOM_STRING_INTERN(mousemove); - CSS_DOM_STRING_INTERN(mouseout); - CSS_DOM_STRING_INTERN(mouseover); - CSS_DOM_STRING_INTERN(mouseup); - CSS_DOM_STRING_INTERN(mousewheel); - CSS_DOM_STRING_INTERN(name); - CSS_DOM_STRING_INTERN(nohref); - CSS_DOM_STRING_INTERN(noresize); - CSS_DOM_STRING_INTERN(nowrap); - CSS_DOM_STRING_INTERN(offline); - CSS_DOM_STRING_INTERN(online); - CSS_DOM_STRING_INTERN(pagehide); - CSS_DOM_STRING_INTERN(pageshow); - CSS_DOM_STRING_INTERN(pause); - CSS_DOM_STRING_INTERN(play); - CSS_DOM_STRING_INTERN(playing); - CSS_DOM_STRING_INTERN(popstate); - CSS_DOM_STRING_INTERN(progress); - CSS_DOM_STRING_INTERN(ratechange); - CSS_DOM_STRING_INTERN(readystatechange); - CSS_DOM_STRING_INTERN(rect); - CSS_DOM_STRING_INTERN(rel); - CSS_DOM_STRING_INTERN(reset); - CSS_DOM_STRING_INTERN(resize); - CSS_DOM_STRING_INTERN(rows); - CSS_DOM_STRING_INTERN(rowspan); - CSS_DOM_STRING_INTERN(scroll); - CSS_DOM_STRING_INTERN(scrolling); - CSS_DOM_STRING_INTERN(seeked); - CSS_DOM_STRING_INTERN(seeking); - CSS_DOM_STRING_INTERN(select); - CSS_DOM_STRING_INTERN(selected); - CSS_DOM_STRING_INTERN(shape); - CSS_DOM_STRING_INTERN(show); - CSS_DOM_STRING_INTERN(size); - CSS_DOM_STRING_INTERN(sizes); - CSS_DOM_STRING_INTERN(src); - CSS_DOM_STRING_INTERN(stalled); - CSS_DOM_STRING_INTERN(storage); - CSS_DOM_STRING_INTERN(style); - CSS_DOM_STRING_INTERN(submit); - CSS_DOM_STRING_INTERN(suspend); - CSS_DOM_STRING_INTERN(target); - CSS_DOM_STRING_INTERN(text); - CSS_DOM_STRING_INTERN(timeupdate); - CSS_DOM_STRING_INTERN(title); - CSS_DOM_STRING_INTERN(type); - CSS_DOM_STRING_INTERN(unload); - CSS_DOM_STRING_INTERN(valign); - CSS_DOM_STRING_INTERN(value); - CSS_DOM_STRING_INTERN(vlink); - CSS_DOM_STRING_INTERN(volumechange); - CSS_DOM_STRING_INTERN(vspace); - CSS_DOM_STRING_INTERN(waiting); - CSS_DOM_STRING_INTERN(width); - /* DOM node names, not really CSS */ - CSS_DOM_STRING_INTERN(BUTTON); - CSS_DOM_STRING_INTERN(INPUT); - CSS_DOM_STRING_INTERN(SELECT); - CSS_DOM_STRING_INTERN(TEXTAREA); - CSS_DOM_STRING_INTERN(BODY); - CSS_DOM_STRING_INTERN(HEAD); - /* DOM input types, not really CSS */ - CSS_DOM_STRING_INTERN(button); - CSS_DOM_STRING_INTERN(image); - CSS_DOM_STRING_INTERN(radio); - CSS_DOM_STRING_INTERN(checkbox); - CSS_DOM_STRING_INTERN(file); - /* DOM event prefix */ - CSS_DOM_STRING_INTERN(on); - /* DOM events forwarded from body to window */ - CSS_DOM_STRING_INTERN(onblur); - CSS_DOM_STRING_INTERN(onerror); - CSS_DOM_STRING_INTERN(onfocus); - CSS_DOM_STRING_INTERN(onload); - CSS_DOM_STRING_INTERN(onresize); - CSS_DOM_STRING_INTERN(onscroll); - /* Corestrings used by DOM event registration */ - CSS_DOM_STRING_INTERN(autocomplete); - CSS_DOM_STRING_INTERN(autocompleteerror); - CSS_DOM_STRING_INTERN(dragexit); - CSS_DOM_STRING_INTERN(mouseenter); - CSS_DOM_STRING_INTERN(mouseleave); - CSS_DOM_STRING_INTERN(wheel); - CSS_DOM_STRING_INTERN(sort); - CSS_DOM_STRING_INTERN(toggle); - /* DOM userdata keys, not really CSS */ - CSS_DOM_STRING_INTERN(__ns_key_box_node_data); - CSS_DOM_STRING_INTERN(__ns_key_libcss_node_data); - CSS_DOM_STRING_INTERN(__ns_key_file_name_node_data); - CSS_DOM_STRING_INTERN(__ns_key_image_coords_node_data); - CSS_DOM_STRING_INTERN(__ns_key_html_content_data); -#undef CSS_DOM_STRING_INTERN - - exc = dom_string_create_interned((const uint8_t *) "text/javascript", - SLEN("text/javascript"), - &corestring_dom_text_javascript); - if ((exc != DOM_NO_ERR) || (corestring_dom_text_javascript == NULL)) { - error = NSERROR_NOMEM; - goto error; - } - - exc = dom_string_create_interned((const uint8_t *) "http-equiv", - SLEN("http-equiv"), - &corestring_dom_http_equiv); - if ((exc != DOM_NO_ERR) || (corestring_dom_http_equiv == NULL)) { - error = NSERROR_NOMEM; - goto error; - } +#define CORESTRING_NSURL(NAME,VALUE) \ + do { \ + error = nsurl_create(VALUE, \ + &corestring_nsurl_##NAME); \ + if (error != NSERROR_OK) { \ + goto error; \ + } \ + } while(0) - exc = dom_string_create_interned((const uint8_t *) "http://www.w3.org/1999/xhtml", - SLEN("http://www.w3.org/1999/xhtml"), - &corestring_dom_html_namespace); - if ((exc != DOM_NO_ERR) || (corestring_dom_html_namespace == NULL)) { - error = NSERROR_NOMEM; - goto error; - } +#include "utils/corestringlist.h" - error = nsurl_create("about:blank", &corestring_nsurl_about_blank); - if (error != NSERROR_OK) { - goto error; - } +#undef CORESTRING_LWC_VALUE +#undef CORESTRING_DOM_VALUE +#undef CORESTRING_NSURL return NSERROR_OK; |