Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * Copyright 2012 Michael Drake <tlsa@netsurf-browser.org>
  3.  *
  4.  * This file is part of NetSurf, http://www.netsurf-browser.org/
  5.  *
  6.  * NetSurf is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License as published by
  8.  * the Free Software Foundation; version 2 of the License.
  9.  *
  10.  * NetSurf is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  * GNU General Public License for more details.
  14.  *
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  17.  */
  18.  
  19. /** \file
  20.  * Useful interned string pointers (implementation).
  21.  */
  22.  
  23. #include <dom/dom.h>
  24.  
  25. #include "utils/corestrings.h"
  26. #include "utils/utils.h"
  27.  
  28. /* lwc_string strings */
  29. lwc_string *corestring_lwc_a;
  30. lwc_string *corestring_lwc_abscenter;
  31. lwc_string *corestring_lwc_absmiddle;
  32. lwc_string *corestring_lwc_align;
  33. lwc_string *corestring_lwc_applet;
  34. lwc_string *corestring_lwc_base;
  35. lwc_string *corestring_lwc_baseline;
  36. lwc_string *corestring_lwc_body;
  37. lwc_string *corestring_lwc_bottom;
  38. lwc_string *corestring_lwc_button;
  39. lwc_string *corestring_lwc_caption;
  40. lwc_string *corestring_lwc_center;
  41. lwc_string *corestring_lwc_checkbox;
  42. lwc_string *corestring_lwc_circle;
  43. lwc_string *corestring_lwc_col;
  44. lwc_string *corestring_lwc_default;
  45. lwc_string *corestring_lwc_div;
  46. lwc_string *corestring_lwc_embed;
  47. lwc_string *corestring_lwc_file;
  48. lwc_string *corestring_lwc_font;
  49. lwc_string *corestring_lwc_frame;
  50. lwc_string *corestring_lwc_frameset;
  51. lwc_string *corestring_lwc_h1;
  52. lwc_string *corestring_lwc_h2;
  53. lwc_string *corestring_lwc_h3;
  54. lwc_string *corestring_lwc_h4;
  55. lwc_string *corestring_lwc_h5;
  56. lwc_string *corestring_lwc_h6;
  57. lwc_string *corestring_lwc_head;
  58. lwc_string *corestring_lwc_hidden;
  59. lwc_string *corestring_lwc_hr;
  60. lwc_string *corestring_lwc_html;
  61. lwc_string *corestring_lwc_https;
  62. lwc_string *corestring_lwc_iframe;
  63. lwc_string *corestring_lwc_image;
  64. lwc_string *corestring_lwc_img;
  65. lwc_string *corestring_lwc_input;
  66. lwc_string *corestring_lwc_justify;
  67. lwc_string *corestring_lwc_left;
  68. lwc_string *corestring_lwc_li;
  69. lwc_string *corestring_lwc_link;
  70. lwc_string *corestring_lwc_meta;
  71. lwc_string *corestring_lwc_middle;
  72. lwc_string *corestring_lwc_multipart_form_data;
  73. lwc_string *corestring_lwc_no;
  74. lwc_string *corestring_lwc_noscript;
  75. lwc_string *corestring_lwc_object;
  76. lwc_string *corestring_lwc_optgroup;
  77. lwc_string *corestring_lwc_option;
  78. lwc_string *corestring_lwc_p;
  79. lwc_string *corestring_lwc_param;
  80. lwc_string *corestring_lwc_password;
  81. lwc_string *corestring_lwc_poly;
  82. lwc_string *corestring_lwc_polygon;
  83. lwc_string *corestring_lwc_post;
  84. lwc_string *corestring_lwc_radio;
  85. lwc_string *corestring_lwc_rect;
  86. lwc_string *corestring_lwc_rectangle;
  87. lwc_string *corestring_lwc_refresh;
  88. lwc_string *corestring_lwc_reset;
  89. lwc_string *corestring_lwc_right;
  90. lwc_string *corestring_lwc_search;
  91. lwc_string *corestring_lwc_select;
  92. lwc_string *corestring_lwc_src;
  93. lwc_string *corestring_lwc_style;
  94. lwc_string *corestring_lwc_submit;
  95. lwc_string *corestring_lwc_table;
  96. lwc_string *corestring_lwc_tbody;
  97. lwc_string *corestring_lwc_td;
  98. lwc_string *corestring_lwc_text;
  99. lwc_string *corestring_lwc_textarea;
  100. lwc_string *corestring_lwc_texttop;
  101. lwc_string *corestring_lwc_text_css;
  102. lwc_string *corestring_lwc_tfoot;
  103. lwc_string *corestring_lwc_th;
  104. lwc_string *corestring_lwc_thead;
  105. lwc_string *corestring_lwc_title;
  106. lwc_string *corestring_lwc_top;
  107. lwc_string *corestring_lwc_tr;
  108. lwc_string *corestring_lwc_ul;
  109. lwc_string *corestring_lwc_url;
  110. lwc_string *corestring_lwc_yes;
  111. lwc_string *corestring_lwc__blank;
  112. lwc_string *corestring_lwc__parent;
  113. lwc_string *corestring_lwc__self;
  114. lwc_string *corestring_lwc__top;
  115.  
  116. /* dom_string strings */
  117. dom_string *corestring_dom_a;
  118. dom_string *corestring_dom_abort;
  119. dom_string *corestring_dom_afterprint;
  120. dom_string *corestring_dom_align;
  121. dom_string *corestring_dom_area;
  122. dom_string *corestring_dom_async;
  123. dom_string *corestring_dom_background;
  124. dom_string *corestring_dom_beforeprint;
  125. dom_string *corestring_dom_beforeunload;
  126. dom_string *corestring_dom_bgcolor;
  127. dom_string *corestring_dom_blur;
  128. dom_string *corestring_dom_border;
  129. dom_string *corestring_dom_bordercolor;
  130. dom_string *corestring_dom_cancel;
  131. dom_string *corestring_dom_canplay;
  132. dom_string *corestring_dom_canplaythrough;
  133. dom_string *corestring_dom_cellpadding;
  134. dom_string *corestring_dom_cellspacing;
  135. dom_string *corestring_dom_change;
  136. dom_string *corestring_dom_charset;
  137. dom_string *corestring_dom_class;
  138. dom_string *corestring_dom_click;
  139. dom_string *corestring_dom_close;
  140. dom_string *corestring_dom_color;
  141. dom_string *corestring_dom_cols;
  142. dom_string *corestring_dom_content;
  143. dom_string *corestring_dom_contextmenu;
  144. dom_string *corestring_dom_coords;
  145. dom_string *corestring_dom_cuechange;
  146. dom_string *corestring_dom_dblclick;
  147. dom_string *corestring_dom_defer;
  148. dom_string *corestring_dom_drag;
  149. dom_string *corestring_dom_dragend;
  150. dom_string *corestring_dom_dragenter;
  151. dom_string *corestring_dom_dragleave;
  152. dom_string *corestring_dom_dragover;
  153. dom_string *corestring_dom_dragstart;
  154. dom_string *corestring_dom_drop;
  155. dom_string *corestring_dom_durationchange;
  156. dom_string *corestring_dom_emptied;
  157. dom_string *corestring_dom_ended;
  158. dom_string *corestring_dom_error;
  159. dom_string *corestring_dom_focus;
  160. dom_string *corestring_dom_hashchange;
  161. dom_string *corestring_dom_height;
  162. dom_string *corestring_dom_href;
  163. dom_string *corestring_dom_hreflang;
  164. dom_string *corestring_dom_hspace;
  165. dom_string *corestring_dom_http_equiv;
  166. dom_string *corestring_dom_id;
  167. dom_string *corestring_dom_input;
  168. dom_string *corestring_dom_invalid;
  169. dom_string *corestring_dom_keydown;
  170. dom_string *corestring_dom_keypress;
  171. dom_string *corestring_dom_keyup;
  172. dom_string *corestring_dom_link;
  173. dom_string *corestring_dom_load;
  174. dom_string *corestring_dom_loadeddata;
  175. dom_string *corestring_dom_loadedmetadata;
  176. dom_string *corestring_dom_loadstart;
  177. dom_string *corestring_dom_map;
  178. dom_string *corestring_dom_media;
  179. dom_string *corestring_dom_message;
  180. dom_string *corestring_dom_mousedown;
  181. dom_string *corestring_dom_mousemove;
  182. dom_string *corestring_dom_mouseout;
  183. dom_string *corestring_dom_mouseover;
  184. dom_string *corestring_dom_mouseup;
  185. dom_string *corestring_dom_mousewheel;
  186. dom_string *corestring_dom_name;
  187. dom_string *corestring_dom_nohref;
  188. dom_string *corestring_dom_offline;
  189. dom_string *corestring_dom_online;
  190. dom_string *corestring_dom_pagehide;
  191. dom_string *corestring_dom_pageshow;
  192. dom_string *corestring_dom_pause;
  193. dom_string *corestring_dom_play;
  194. dom_string *corestring_dom_playing;
  195. dom_string *corestring_dom_popstate;
  196. dom_string *corestring_dom_progress;
  197. dom_string *corestring_dom_ratechange;
  198. dom_string *corestring_dom_readystatechange;
  199. dom_string *corestring_dom_rect;
  200. dom_string *corestring_dom_rel;
  201. dom_string *corestring_dom_reset;
  202. dom_string *corestring_dom_resize;
  203. dom_string *corestring_dom_rows;
  204. dom_string *corestring_dom_scroll;
  205. dom_string *corestring_dom_seeked;
  206. dom_string *corestring_dom_seeking;
  207. dom_string *corestring_dom_select;
  208. dom_string *corestring_dom_shape;
  209. dom_string *corestring_dom_show;
  210. dom_string *corestring_dom_size;
  211. dom_string *corestring_dom_sizes;
  212. dom_string *corestring_dom_src;
  213. dom_string *corestring_dom_stalled;
  214. dom_string *corestring_dom_storage;
  215. dom_string *corestring_dom_submit;
  216. dom_string *corestring_dom_suspend;
  217. dom_string *corestring_dom_target;
  218. dom_string *corestring_dom_text;
  219. dom_string *corestring_dom_text_javascript;
  220. dom_string *corestring_dom_timeupdate;
  221. dom_string *corestring_dom_type;
  222. dom_string *corestring_dom_unload;
  223. dom_string *corestring_dom_valign;
  224. dom_string *corestring_dom_vlink;
  225. dom_string *corestring_dom_volumechange;
  226. dom_string *corestring_dom_vspace;
  227. dom_string *corestring_dom_waiting;
  228. dom_string *corestring_dom_width;
  229.  
  230.  
  231. /*
  232.  * Free the core strings
  233.  */
  234. void corestrings_fini(void)
  235. {
  236. #define CSS_LWC_STRING_UNREF(NAME)                                      \
  237.         do {                                                            \
  238.                 if (corestring_lwc_##NAME != NULL) {                    \
  239.                         lwc_string_unref(corestring_lwc_##NAME);        \
  240.                         corestring_lwc_##NAME = NULL;                   \
  241.                 }                                                       \
  242.         } while (0)
  243.  
  244.         CSS_LWC_STRING_UNREF(a);
  245.         CSS_LWC_STRING_UNREF(abscenter);
  246.         CSS_LWC_STRING_UNREF(absmiddle);
  247.         CSS_LWC_STRING_UNREF(align);
  248.         CSS_LWC_STRING_UNREF(applet);
  249.         CSS_LWC_STRING_UNREF(base);
  250.         CSS_LWC_STRING_UNREF(baseline);
  251.         CSS_LWC_STRING_UNREF(body);
  252.         CSS_LWC_STRING_UNREF(bottom);
  253.         CSS_LWC_STRING_UNREF(button);
  254.         CSS_LWC_STRING_UNREF(caption);
  255.         CSS_LWC_STRING_UNREF(center);
  256.         CSS_LWC_STRING_UNREF(checkbox);
  257.         CSS_LWC_STRING_UNREF(circle);
  258.         CSS_LWC_STRING_UNREF(col);
  259.         CSS_LWC_STRING_UNREF(default);
  260.         CSS_LWC_STRING_UNREF(div);
  261.         CSS_LWC_STRING_UNREF(embed);
  262.         CSS_LWC_STRING_UNREF(file);
  263.         CSS_LWC_STRING_UNREF(font);
  264.         CSS_LWC_STRING_UNREF(frame);
  265.         CSS_LWC_STRING_UNREF(frameset);
  266.         CSS_LWC_STRING_UNREF(h1);
  267.         CSS_LWC_STRING_UNREF(h2);
  268.         CSS_LWC_STRING_UNREF(h3);
  269.         CSS_LWC_STRING_UNREF(h4);
  270.         CSS_LWC_STRING_UNREF(h5);
  271.         CSS_LWC_STRING_UNREF(h6);
  272.         CSS_LWC_STRING_UNREF(head);
  273.         CSS_LWC_STRING_UNREF(hidden);
  274.         CSS_LWC_STRING_UNREF(hr);
  275.         CSS_LWC_STRING_UNREF(html);
  276.         CSS_LWC_STRING_UNREF(https);
  277.         CSS_LWC_STRING_UNREF(iframe);
  278.         CSS_LWC_STRING_UNREF(image);
  279.         CSS_LWC_STRING_UNREF(img);
  280.         CSS_LWC_STRING_UNREF(input);
  281.         CSS_LWC_STRING_UNREF(justify);
  282.         CSS_LWC_STRING_UNREF(left);
  283.         CSS_LWC_STRING_UNREF(li);
  284.         CSS_LWC_STRING_UNREF(link);
  285.         CSS_LWC_STRING_UNREF(meta);
  286.         CSS_LWC_STRING_UNREF(middle);
  287.         CSS_LWC_STRING_UNREF(multipart_form_data);
  288.         CSS_LWC_STRING_UNREF(no);
  289.         CSS_LWC_STRING_UNREF(noscript);
  290.         CSS_LWC_STRING_UNREF(object);
  291.         CSS_LWC_STRING_UNREF(optgroup);
  292.         CSS_LWC_STRING_UNREF(option);
  293.         CSS_LWC_STRING_UNREF(p);
  294.         CSS_LWC_STRING_UNREF(param);
  295.         CSS_LWC_STRING_UNREF(password);
  296.         CSS_LWC_STRING_UNREF(poly);
  297.         CSS_LWC_STRING_UNREF(polygon);
  298.         CSS_LWC_STRING_UNREF(post);
  299.         CSS_LWC_STRING_UNREF(radio);
  300.         CSS_LWC_STRING_UNREF(rect);
  301.         CSS_LWC_STRING_UNREF(rectangle);
  302.         CSS_LWC_STRING_UNREF(refresh);
  303.         CSS_LWC_STRING_UNREF(reset);
  304.         CSS_LWC_STRING_UNREF(right);
  305.         CSS_LWC_STRING_UNREF(search);
  306.         CSS_LWC_STRING_UNREF(select);
  307.         CSS_LWC_STRING_UNREF(src);
  308.         CSS_LWC_STRING_UNREF(style);
  309.         CSS_LWC_STRING_UNREF(submit);
  310.         CSS_LWC_STRING_UNREF(table);
  311.         CSS_LWC_STRING_UNREF(tbody);
  312.         CSS_LWC_STRING_UNREF(td);
  313.         CSS_LWC_STRING_UNREF(text);
  314.         CSS_LWC_STRING_UNREF(textarea);
  315.         CSS_LWC_STRING_UNREF(texttop);
  316.         CSS_LWC_STRING_UNREF(text_css);
  317.         CSS_LWC_STRING_UNREF(tfoot);
  318.         CSS_LWC_STRING_UNREF(th);
  319.         CSS_LWC_STRING_UNREF(thead);
  320.         CSS_LWC_STRING_UNREF(title);
  321.         CSS_LWC_STRING_UNREF(top);
  322.         CSS_LWC_STRING_UNREF(tr);
  323.         CSS_LWC_STRING_UNREF(ul);
  324.         CSS_LWC_STRING_UNREF(url);
  325.         CSS_LWC_STRING_UNREF(yes);
  326.         CSS_LWC_STRING_UNREF(_blank);
  327.         CSS_LWC_STRING_UNREF(_parent);
  328.         CSS_LWC_STRING_UNREF(_self);
  329.         CSS_LWC_STRING_UNREF(_top);
  330.  
  331. #undef CSS_LWC_STRING_UNREF
  332.  
  333. #define CSS_DOM_STRING_UNREF(NAME)                                      \
  334.         do {                                                            \
  335.                 if (corestring_dom_##NAME != NULL) {                    \
  336.                         dom_string_unref(corestring_dom_##NAME);        \
  337.                         corestring_dom_##NAME = NULL;                   \
  338.                 }                                                       \
  339.         } while (0)
  340.  
  341.         CSS_DOM_STRING_UNREF(a);
  342.         CSS_DOM_STRING_UNREF(abort);
  343.         CSS_DOM_STRING_UNREF(afterprint);
  344.         CSS_DOM_STRING_UNREF(align);
  345.         CSS_DOM_STRING_UNREF(area);
  346.         CSS_DOM_STRING_UNREF(async);
  347.         CSS_DOM_STRING_UNREF(background);
  348.         CSS_DOM_STRING_UNREF(beforeprint);
  349.         CSS_DOM_STRING_UNREF(beforeunload);
  350.         CSS_DOM_STRING_UNREF(bgcolor);
  351.         CSS_DOM_STRING_UNREF(blur);
  352.         CSS_DOM_STRING_UNREF(border);
  353.         CSS_DOM_STRING_UNREF(bordercolor);
  354.         CSS_DOM_STRING_UNREF(cancel);
  355.         CSS_DOM_STRING_UNREF(canplay);
  356.         CSS_DOM_STRING_UNREF(canplaythrough);
  357.         CSS_DOM_STRING_UNREF(cellpadding);
  358.         CSS_DOM_STRING_UNREF(cellspacing);
  359.         CSS_DOM_STRING_UNREF(change);
  360.         CSS_DOM_STRING_UNREF(charset);
  361.         CSS_DOM_STRING_UNREF(class);
  362.         CSS_DOM_STRING_UNREF(click);
  363.         CSS_DOM_STRING_UNREF(close);
  364.         CSS_DOM_STRING_UNREF(color);
  365.         CSS_DOM_STRING_UNREF(cols);
  366.         CSS_DOM_STRING_UNREF(content);
  367.         CSS_DOM_STRING_UNREF(contextmenu);
  368.         CSS_DOM_STRING_UNREF(coords);
  369.         CSS_DOM_STRING_UNREF(cuechange);
  370.         CSS_DOM_STRING_UNREF(dblclick);
  371.         CSS_DOM_STRING_UNREF(defer);
  372.         CSS_DOM_STRING_UNREF(drag);
  373.         CSS_DOM_STRING_UNREF(dragend);
  374.         CSS_DOM_STRING_UNREF(dragenter);
  375.         CSS_DOM_STRING_UNREF(dragleave);
  376.         CSS_DOM_STRING_UNREF(dragover);
  377.         CSS_DOM_STRING_UNREF(dragstart);
  378.         CSS_DOM_STRING_UNREF(drop);
  379.         CSS_DOM_STRING_UNREF(durationchange);
  380.         CSS_DOM_STRING_UNREF(emptied);
  381.         CSS_DOM_STRING_UNREF(ended);
  382.         CSS_DOM_STRING_UNREF(error);
  383.         CSS_DOM_STRING_UNREF(focus);
  384.         CSS_DOM_STRING_UNREF(hashchange);
  385.         CSS_DOM_STRING_UNREF(height);
  386.         CSS_DOM_STRING_UNREF(href);
  387.         CSS_DOM_STRING_UNREF(hreflang);
  388.         CSS_DOM_STRING_UNREF(hspace);
  389.         CSS_DOM_STRING_UNREF(http_equiv);
  390.         CSS_DOM_STRING_UNREF(id);
  391.         CSS_DOM_STRING_UNREF(input);
  392.         CSS_DOM_STRING_UNREF(invalid);
  393.         CSS_DOM_STRING_UNREF(keydown);
  394.         CSS_DOM_STRING_UNREF(keypress);
  395.         CSS_DOM_STRING_UNREF(keyup);
  396.         CSS_DOM_STRING_UNREF(link);
  397.         CSS_DOM_STRING_UNREF(load);
  398.         CSS_DOM_STRING_UNREF(loadeddata);
  399.         CSS_DOM_STRING_UNREF(loadedmetadata);
  400.         CSS_DOM_STRING_UNREF(loadstart);
  401.         CSS_DOM_STRING_UNREF(map);
  402.         CSS_DOM_STRING_UNREF(media);
  403.         CSS_DOM_STRING_UNREF(message);
  404.         CSS_DOM_STRING_UNREF(mousedown);
  405.         CSS_DOM_STRING_UNREF(mousemove);
  406.         CSS_DOM_STRING_UNREF(mouseout);
  407.         CSS_DOM_STRING_UNREF(mouseover);
  408.         CSS_DOM_STRING_UNREF(mouseup);
  409.         CSS_DOM_STRING_UNREF(mousewheel);
  410.         CSS_DOM_STRING_UNREF(name);
  411.         CSS_DOM_STRING_UNREF(nohref);
  412.         CSS_DOM_STRING_UNREF(offline);
  413.         CSS_DOM_STRING_UNREF(online);
  414.         CSS_DOM_STRING_UNREF(pagehide);
  415.         CSS_DOM_STRING_UNREF(pageshow);
  416.         CSS_DOM_STRING_UNREF(pause);
  417.         CSS_DOM_STRING_UNREF(play);
  418.         CSS_DOM_STRING_UNREF(playing);
  419.         CSS_DOM_STRING_UNREF(popstate);
  420.         CSS_DOM_STRING_UNREF(progress);
  421.         CSS_DOM_STRING_UNREF(ratechange);
  422.         CSS_DOM_STRING_UNREF(readystatechange);
  423.         CSS_DOM_STRING_UNREF(rect);
  424.         CSS_DOM_STRING_UNREF(rel);
  425.         CSS_DOM_STRING_UNREF(reset);
  426.         CSS_DOM_STRING_UNREF(resize);
  427.         CSS_DOM_STRING_UNREF(rows);
  428.         CSS_DOM_STRING_UNREF(scroll);
  429.         CSS_DOM_STRING_UNREF(seeked);
  430.         CSS_DOM_STRING_UNREF(seeking);
  431.         CSS_DOM_STRING_UNREF(select);
  432.         CSS_DOM_STRING_UNREF(shape);
  433.         CSS_DOM_STRING_UNREF(show);
  434.         CSS_DOM_STRING_UNREF(size);
  435.         CSS_DOM_STRING_UNREF(sizes);
  436.         CSS_DOM_STRING_UNREF(src);
  437.         CSS_DOM_STRING_UNREF(stalled);
  438.         CSS_DOM_STRING_UNREF(storage);
  439.         CSS_DOM_STRING_UNREF(submit);
  440.         CSS_DOM_STRING_UNREF(suspend);
  441.         CSS_DOM_STRING_UNREF(target);
  442.         CSS_DOM_STRING_UNREF(text);
  443.         CSS_DOM_STRING_UNREF(text_javascript);
  444.         CSS_DOM_STRING_UNREF(timeupdate);
  445.         CSS_DOM_STRING_UNREF(type);
  446.         CSS_DOM_STRING_UNREF(unload);
  447.         CSS_DOM_STRING_UNREF(valign);
  448.         CSS_DOM_STRING_UNREF(vlink);
  449.         CSS_DOM_STRING_UNREF(volumechange);
  450.         CSS_DOM_STRING_UNREF(vspace);
  451.         CSS_DOM_STRING_UNREF(waiting);
  452.         CSS_DOM_STRING_UNREF(width);
  453. #undef CSS_DOM_STRING_UNREF
  454. }
  455.  
  456.  
  457. /*
  458.  * Create the core strings
  459.  */
  460. nserror corestrings_init(void)
  461. {
  462.         lwc_error lerror;
  463.         nserror error;
  464.         dom_exception exc;
  465.  
  466. #define CSS_LWC_STRING_INTERN(NAME)                                     \
  467.         do {                                                            \
  468.                 lerror = lwc_intern_string(                             \
  469.                                 (const char *)#NAME,                    \
  470.                                 sizeof(#NAME) - 1,                      \
  471.                                 &corestring_lwc_##NAME );               \
  472.                 if ((lerror != lwc_error_ok) ||                         \
  473.                                 (corestring_lwc_##NAME == NULL)) {      \
  474.                         error = NSERROR_NOMEM;                          \
  475.                         goto error;                                     \
  476.                 }                                                       \
  477.         } while(0)
  478.  
  479.         CSS_LWC_STRING_INTERN(a);
  480.         CSS_LWC_STRING_INTERN(abscenter);
  481.         CSS_LWC_STRING_INTERN(absmiddle);
  482.         CSS_LWC_STRING_INTERN(align);
  483.         CSS_LWC_STRING_INTERN(applet);
  484.         CSS_LWC_STRING_INTERN(base);
  485.         CSS_LWC_STRING_INTERN(baseline);
  486.         CSS_LWC_STRING_INTERN(body);
  487.         CSS_LWC_STRING_INTERN(bottom);
  488.         CSS_LWC_STRING_INTERN(button);
  489.         CSS_LWC_STRING_INTERN(caption);
  490.         CSS_LWC_STRING_INTERN(center);
  491.         CSS_LWC_STRING_INTERN(checkbox);
  492.         CSS_LWC_STRING_INTERN(circle);
  493.         CSS_LWC_STRING_INTERN(col);
  494.         CSS_LWC_STRING_INTERN(default);
  495.         CSS_LWC_STRING_INTERN(div);
  496.         CSS_LWC_STRING_INTERN(embed);
  497.         CSS_LWC_STRING_INTERN(file);
  498.         CSS_LWC_STRING_INTERN(font);
  499.         CSS_LWC_STRING_INTERN(frame);
  500.         CSS_LWC_STRING_INTERN(frameset);
  501.         CSS_LWC_STRING_INTERN(h1);
  502.         CSS_LWC_STRING_INTERN(h2);
  503.         CSS_LWC_STRING_INTERN(h3);
  504.         CSS_LWC_STRING_INTERN(h4);
  505.         CSS_LWC_STRING_INTERN(h5);
  506.         CSS_LWC_STRING_INTERN(h6);
  507.         CSS_LWC_STRING_INTERN(head);
  508.         CSS_LWC_STRING_INTERN(hidden);
  509.         CSS_LWC_STRING_INTERN(hr);
  510.         CSS_LWC_STRING_INTERN(html);
  511.         CSS_LWC_STRING_INTERN(https);
  512.         CSS_LWC_STRING_INTERN(iframe);
  513.         CSS_LWC_STRING_INTERN(image);
  514.         CSS_LWC_STRING_INTERN(img);
  515.         CSS_LWC_STRING_INTERN(input);
  516.         CSS_LWC_STRING_INTERN(justify);
  517.         CSS_LWC_STRING_INTERN(left);
  518.         CSS_LWC_STRING_INTERN(li);
  519.         CSS_LWC_STRING_INTERN(link);
  520.         CSS_LWC_STRING_INTERN(meta);
  521.         CSS_LWC_STRING_INTERN(middle);
  522.         CSS_LWC_STRING_INTERN(no);
  523.         CSS_LWC_STRING_INTERN(noscript);
  524.         CSS_LWC_STRING_INTERN(object);
  525.         CSS_LWC_STRING_INTERN(optgroup);
  526.         CSS_LWC_STRING_INTERN(option);
  527.         CSS_LWC_STRING_INTERN(p);
  528.         CSS_LWC_STRING_INTERN(param);
  529.         CSS_LWC_STRING_INTERN(password);
  530.         CSS_LWC_STRING_INTERN(poly);
  531.         CSS_LWC_STRING_INTERN(polygon);
  532.         CSS_LWC_STRING_INTERN(post);
  533.         CSS_LWC_STRING_INTERN(radio);
  534.         CSS_LWC_STRING_INTERN(rect);
  535.         CSS_LWC_STRING_INTERN(rectangle);
  536.         CSS_LWC_STRING_INTERN(refresh);
  537.         CSS_LWC_STRING_INTERN(reset);
  538.         CSS_LWC_STRING_INTERN(right);
  539.         CSS_LWC_STRING_INTERN(search);
  540.         CSS_LWC_STRING_INTERN(select);
  541.         CSS_LWC_STRING_INTERN(src);
  542.         CSS_LWC_STRING_INTERN(style);
  543.         CSS_LWC_STRING_INTERN(submit);
  544.         CSS_LWC_STRING_INTERN(table);
  545.         CSS_LWC_STRING_INTERN(tbody);
  546.         CSS_LWC_STRING_INTERN(td);
  547.         CSS_LWC_STRING_INTERN(text);
  548.         CSS_LWC_STRING_INTERN(textarea);
  549.         CSS_LWC_STRING_INTERN(texttop);
  550.         CSS_LWC_STRING_INTERN(tfoot);
  551.         CSS_LWC_STRING_INTERN(th);
  552.         CSS_LWC_STRING_INTERN(thead);
  553.         CSS_LWC_STRING_INTERN(title);
  554.         CSS_LWC_STRING_INTERN(top);
  555.         CSS_LWC_STRING_INTERN(tr);
  556.         CSS_LWC_STRING_INTERN(ul);
  557.         CSS_LWC_STRING_INTERN(url);
  558.         CSS_LWC_STRING_INTERN(yes);
  559.         CSS_LWC_STRING_INTERN(_blank);
  560.         CSS_LWC_STRING_INTERN(_parent);
  561.         CSS_LWC_STRING_INTERN(_self);
  562.         CSS_LWC_STRING_INTERN(_top);
  563. #undef CSS_LWC_STRING_INTERN
  564.  
  565.  
  566.         lerror = lwc_intern_string("multipart/form-data",
  567.                         SLEN("multipart/form-data"),
  568.                         &corestring_lwc_multipart_form_data);
  569.         if ((lerror != lwc_error_ok) ||
  570.                         (corestring_lwc_multipart_form_data == NULL)) {
  571.                 error = NSERROR_NOMEM;
  572.                 goto error;
  573.         }
  574.  
  575.         lerror = lwc_intern_string("text/css", SLEN("text/css"),
  576.                         &corestring_lwc_text_css);
  577.         if ((lerror != lwc_error_ok) || (corestring_lwc_text_css == NULL)) {
  578.                 error = NSERROR_NOMEM;
  579.                 goto error;
  580.         }
  581.  
  582.  
  583. #define CSS_DOM_STRING_INTERN(NAME)                                     \
  584.         do {                                                            \
  585.                 exc = dom_string_create_interned(                       \
  586.                                 (const uint8_t *)#NAME,                 \
  587.                                 sizeof(#NAME) - 1,                      \
  588.                                 &corestring_dom_##NAME );               \
  589.                 if ((exc != DOM_NO_ERR) ||                              \
  590.                                 (corestring_dom_##NAME == NULL)) {      \
  591.                         error = NSERROR_NOMEM;                          \
  592.                         goto error;                                     \
  593.                 }                                                       \
  594.         } while(0)
  595.  
  596.         CSS_DOM_STRING_INTERN(a);
  597.         CSS_DOM_STRING_INTERN(abort);
  598.         CSS_DOM_STRING_INTERN(afterprint);
  599.         CSS_DOM_STRING_INTERN(align);
  600.         CSS_DOM_STRING_INTERN(area);
  601.         CSS_DOM_STRING_INTERN(async);
  602.         CSS_DOM_STRING_INTERN(background);
  603.         CSS_DOM_STRING_INTERN(beforeprint);
  604.         CSS_DOM_STRING_INTERN(beforeunload);
  605.         CSS_DOM_STRING_INTERN(bgcolor);
  606.         CSS_DOM_STRING_INTERN(blur);
  607.         CSS_DOM_STRING_INTERN(border);
  608.         CSS_DOM_STRING_INTERN(bordercolor);
  609.         CSS_DOM_STRING_INTERN(cancel);
  610.         CSS_DOM_STRING_INTERN(canplay);
  611.         CSS_DOM_STRING_INTERN(canplaythrough);
  612.         CSS_DOM_STRING_INTERN(cellpadding);
  613.         CSS_DOM_STRING_INTERN(cellspacing);
  614.         CSS_DOM_STRING_INTERN(change);
  615.         CSS_DOM_STRING_INTERN(charset);
  616.         CSS_DOM_STRING_INTERN(class);
  617.         CSS_DOM_STRING_INTERN(click);
  618.         CSS_DOM_STRING_INTERN(close);
  619.         CSS_DOM_STRING_INTERN(color);
  620.         CSS_DOM_STRING_INTERN(cols);
  621.         CSS_DOM_STRING_INTERN(content);
  622.         CSS_DOM_STRING_INTERN(contextmenu);
  623.         CSS_DOM_STRING_INTERN(coords);
  624.         CSS_DOM_STRING_INTERN(cuechange);
  625.         CSS_DOM_STRING_INTERN(dblclick);
  626.         CSS_DOM_STRING_INTERN(defer);
  627.         CSS_DOM_STRING_INTERN(drag);
  628.         CSS_DOM_STRING_INTERN(dragend);
  629.         CSS_DOM_STRING_INTERN(dragenter);
  630.         CSS_DOM_STRING_INTERN(dragleave);
  631.         CSS_DOM_STRING_INTERN(dragover);
  632.         CSS_DOM_STRING_INTERN(dragstart);
  633.         CSS_DOM_STRING_INTERN(drop);
  634.         CSS_DOM_STRING_INTERN(durationchange);
  635.         CSS_DOM_STRING_INTERN(emptied);
  636.         CSS_DOM_STRING_INTERN(ended);
  637.         CSS_DOM_STRING_INTERN(error);
  638.         CSS_DOM_STRING_INTERN(focus);
  639.         CSS_DOM_STRING_INTERN(hashchange);
  640.         CSS_DOM_STRING_INTERN(height);
  641.         CSS_DOM_STRING_INTERN(href);
  642.         CSS_DOM_STRING_INTERN(hreflang);
  643.         CSS_DOM_STRING_INTERN(hspace);
  644.         /* http-equiv: see below */
  645.         CSS_DOM_STRING_INTERN(id);
  646.         CSS_DOM_STRING_INTERN(input);
  647.         CSS_DOM_STRING_INTERN(invalid);
  648.         CSS_DOM_STRING_INTERN(keydown);
  649.         CSS_DOM_STRING_INTERN(keypress);
  650.         CSS_DOM_STRING_INTERN(keyup);
  651.         CSS_DOM_STRING_INTERN(link);
  652.         CSS_DOM_STRING_INTERN(load);
  653.         CSS_DOM_STRING_INTERN(loadeddata);
  654.         CSS_DOM_STRING_INTERN(loadedmetadata);
  655.         CSS_DOM_STRING_INTERN(loadstart);
  656.         CSS_DOM_STRING_INTERN(map);
  657.         CSS_DOM_STRING_INTERN(media);
  658.         CSS_DOM_STRING_INTERN(message);
  659.         CSS_DOM_STRING_INTERN(mousedown);
  660.         CSS_DOM_STRING_INTERN(mousemove);
  661.         CSS_DOM_STRING_INTERN(mouseout);
  662.         CSS_DOM_STRING_INTERN(mouseover);
  663.         CSS_DOM_STRING_INTERN(mouseup);
  664.         CSS_DOM_STRING_INTERN(mousewheel);
  665.         CSS_DOM_STRING_INTERN(name);
  666.         CSS_DOM_STRING_INTERN(nohref);
  667.         CSS_DOM_STRING_INTERN(offline);
  668.         CSS_DOM_STRING_INTERN(online);
  669.         CSS_DOM_STRING_INTERN(pagehide);
  670.         CSS_DOM_STRING_INTERN(pageshow);
  671.         CSS_DOM_STRING_INTERN(pause);
  672.         CSS_DOM_STRING_INTERN(play);
  673.         CSS_DOM_STRING_INTERN(playing);
  674.         CSS_DOM_STRING_INTERN(popstate);
  675.         CSS_DOM_STRING_INTERN(progress);
  676.         CSS_DOM_STRING_INTERN(ratechange);
  677.         CSS_DOM_STRING_INTERN(readystatechange);
  678.         CSS_DOM_STRING_INTERN(rect);
  679.         CSS_DOM_STRING_INTERN(rel);
  680.         CSS_DOM_STRING_INTERN(reset);
  681.         CSS_DOM_STRING_INTERN(resize);
  682.         CSS_DOM_STRING_INTERN(rows);
  683.         CSS_DOM_STRING_INTERN(scroll);
  684.         CSS_DOM_STRING_INTERN(seeked);
  685.         CSS_DOM_STRING_INTERN(seeking);
  686.         CSS_DOM_STRING_INTERN(select);
  687.         CSS_DOM_STRING_INTERN(shape);
  688.         CSS_DOM_STRING_INTERN(show);
  689.         CSS_DOM_STRING_INTERN(size);
  690.         CSS_DOM_STRING_INTERN(sizes);
  691.         CSS_DOM_STRING_INTERN(src);
  692.         CSS_DOM_STRING_INTERN(stalled);
  693.         CSS_DOM_STRING_INTERN(storage);
  694.         CSS_DOM_STRING_INTERN(submit);
  695.         CSS_DOM_STRING_INTERN(suspend);
  696.         CSS_DOM_STRING_INTERN(target);
  697.         CSS_DOM_STRING_INTERN(text);
  698.         CSS_DOM_STRING_INTERN(timeupdate);
  699.         CSS_DOM_STRING_INTERN(type);
  700.         CSS_DOM_STRING_INTERN(unload);
  701.         CSS_DOM_STRING_INTERN(valign);
  702.         CSS_DOM_STRING_INTERN(vlink);
  703.         CSS_DOM_STRING_INTERN(volumechange);
  704.         CSS_DOM_STRING_INTERN(vspace);
  705.         CSS_DOM_STRING_INTERN(waiting);
  706.         CSS_DOM_STRING_INTERN(width);
  707. #undef CSS_DOM_STRING_INTERN
  708.  
  709.         exc = dom_string_create_interned((const uint8_t *) "text/javascript",
  710.                         SLEN("text/javascript"),
  711.                         &corestring_dom_text_javascript);
  712.         if ((exc != DOM_NO_ERR) || (corestring_dom_text_javascript == NULL)) {
  713.                 error = NSERROR_NOMEM;
  714.                 goto error;
  715.         }
  716.  
  717.         exc = dom_string_create_interned((const uint8_t *) "http-equiv",
  718.                         SLEN("http-equiv"),
  719.                         &corestring_dom_http_equiv);
  720.         if ((exc != DOM_NO_ERR) || (corestring_dom_http_equiv == NULL)) {
  721.                 error = NSERROR_NOMEM;
  722.                 goto error;
  723.         }
  724.  
  725.         return NSERROR_OK;
  726.  
  727. error:
  728.         corestrings_fini();
  729.  
  730.         return error;
  731. }
  732.