Fix for 3936571, placeholder attribute should work for normal inputs for Dashboard.
[WebKit-https.git] / WebCore / khtml / misc / htmltags.c
1 /* ANSI-C code produced by gperf version 2.7.2 */
2 /* Command-line: gperf -a -L ANSI-C -D -E -C -l -o -t -k '*' -NfindTag -Hhash_tag -Wwordlist_tag htmltags.gperf  */
3 /* This file is automatically generated from htmltags.in by maketags, do not edit */
4 /* Copyright 1999 Lars Knoll */
5 #include "htmltags.h"
6 struct tags {
7     const char *name;
8     int id;
9 };
10 /* maximum key range = 305, duplicates = 1 */
11
12 #ifdef __GNUC__
13 __inline
14 #else
15 #ifdef __cplusplus
16 inline
17 #endif
18 #endif
19 static unsigned int
20 hash_tag (register const char *str, register unsigned int len)
21 {
22   static const unsigned short asso_values[] =
23     {
24       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
25       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
26       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
27       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
28       306, 306, 306, 306, 306, 306, 306, 306, 306,  30,
29        35,  40,  15,  25,  10, 306, 306, 306, 306, 306,
30       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
31       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
32       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
33       306, 306, 306, 306, 306, 306, 306,   0,   5,  30,
34        35,   0, 105,   5,  47,  10,   0,  25,  45,  30,
35        15,   0, 100,  25,   5,  30,   0,  87,  90,   0,
36        20, 115, 306, 306, 306, 306, 306, 306, 306, 306,
37       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
38       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
39       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
40       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
41       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
42       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
43       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
44       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
45       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
46       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
47       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
48       306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
49       306, 306, 306, 306, 306, 306
50     };
51   register int hval = len;
52
53   switch (hval)
54     {
55       default:
56       case 10:
57         hval += asso_values[(unsigned char)str[9]];
58       case 9:
59         hval += asso_values[(unsigned char)str[8]];
60       case 8:
61         hval += asso_values[(unsigned char)str[7]];
62       case 7:
63         hval += asso_values[(unsigned char)str[6]];
64       case 6:
65         hval += asso_values[(unsigned char)str[5]];
66       case 5:
67         hval += asso_values[(unsigned char)str[4]];
68       case 4:
69         hval += asso_values[(unsigned char)str[3]];
70       case 3:
71         hval += asso_values[(unsigned char)str[2]];
72       case 2:
73         hval += asso_values[(unsigned char)str[1]];
74       case 1:
75         hval += asso_values[(unsigned char)str[0]];
76         break;
77     }
78   return hval;
79 }
80
81 #ifdef __GNUC__
82 __inline
83 #endif
84 const struct tags *
85 findTag (register const char *str, register unsigned int len)
86 {
87   enum
88     {
89       TOTAL_KEYWORDS = 105,
90       MIN_WORD_LENGTH = 1,
91       MAX_WORD_LENGTH = 10,
92       MIN_HASH_VALUE = 1,
93       MAX_HASH_VALUE = 305
94     };
95
96   static const unsigned char lengthtable[] =
97     {
98        1,  2,  1,  2,  4,  1,  2,  3,  4,  3,  1,  4,  1,  2,
99        8,  4,  2,  2,  4,  6,  3,  4,  2,  3,  2,  5,  3,  2,
100        5,  6,  2,  3,  2,  5,  6,  2,  3,  4,  2,  2,  5,  6,
101        3,  2,  2,  3,  2,  4,  5,  1,  2,  7,  3,  4,  5,  1,
102        6,  6,  3,  5,  6,  6,  7,  4,  3,  4,  7,  6,  3,  2,
103        4,  3,  5,  7,  4,  5,  4,  3,  7,  5,  6,  3,  4,  5,
104        7,  8,  4,  6,  5,  6,  8,  6,  7,  8,  5,  8,  9,  7,
105        5,  3, 10,  8,  6,  8,  8
106     };
107   static const struct tags wordlist_tag[] =
108     {
109       {"a", ID_A},
110       {"tt", ID_TT},
111       {"b", ID_B},
112       {"tr", ID_TR},
113       {"area", ID_AREA},
114       {"i", ID_I},
115       {"br", ID_BR},
116       {"wbr", ID_WBR},
117       {"abbr", ID_ABBR},
118       {"big", ID_BIG},
119       {"q", ID_Q},
120       {"nobr", ID_NOBR},
121       {"s", ID_S},
122       {"em", ID_EM},
123       {"textarea", ID_TEXTAREA},
124       {"meta", ID_META},
125       {"dt", ID_DT},
126       {"td", ID_TD},
127       {"base", ID_BASE},
128       {"object", ID_OBJECT},
129       {"bdo", ID_BDO},
130       {"cite", ID_CITE},
131       {"ol", ID_OL},
132       {"img", ID_IMG},
133       {"th", ID_TH},
134       {"image", ID_IMG},
135       {"dir", ID_DIR},
136       {"hr", ID_HR},
137       {"table", ID_TABLE},
138       {"center", ID_CENTER},
139       {"li", ID_LI},
140       {"ins", ID_INS},
141       {"h6", ID_H6},
142       {"title", ID_TITLE},
143       {"strong", ID_STRONG},
144       {"h4", ID_H4},
145       {"kbd", ID_KBD},
146       {"code", ID_CODE},
147       {"dd", ID_DD},
148       {"h5", ID_H5},
149       {"embed", ID_EMBED},
150       {"strike", ID_STRIKE},
151       {"col", ID_COL},
152       {"h1", ID_H1},
153       {"dl", ID_DL},
154       {"del", ID_DEL},
155       {"h2", ID_H2},
156       {"head", ID_HEAD},
157       {"thead", ID_THEAD},
158       {"u", ID_U},
159       {"h3", ID_H3},
160       {"noembed", ID_NOEMBED},
161       {"var", ID_VAR},
162       {"link", ID_LINK},
163       {"label", ID_LABEL},
164       {"p", ID_P},
165       {"anchor", ID_A},
166       {"legend", ID_LEGEND},
167       {"pre", ID_PRE},
168       {"tfoot", ID_TFOOT},
169       {"select", ID_SELECT},
170       {"button", ID_BUTTON},
171       {"listing", ID_PRE},
172       {"font", ID_FONT},
173       {"sub", ID_SUB},
174       {"html", ID_HTML},
175       {"isindex", ID_ISINDEX},
176       {"option", ID_OPTION},
177       {"map", ID_MAP},
178       {"ul", ID_UL},
179       {"menu", ID_MENU},
180       {"div", ID_DIV},
181       {"param", ID_PARAM},
182       {"address", ID_ADDRESS},
183       {"form", ID_FORM},
184       {"frame", ID_FRAME},
185       {"span", ID_SPAN},
186       {"xmp", ID_XMP},
187       {"marquee", ID_MARQUEE},
188       {"small", ID_SMALL},
189       {"iframe", ID_IFRAME},
190       {"dfn", ID_DFN},
191       {"body", ID_BODY},
192       {"tbody", ID_TBODY},
193       {"caption", ID_CAPTION},
194       {"basefont", ID_BASEFONT},
195       {"samp", ID_SAMP},
196       {"keygen", ID_KEYGEN},
197       {"layer", ID_LAYER},
198       {"canvas", ID_CANVAS},
199       {"frameset", ID_FRAMESET},
200       {"script", ID_SCRIPT},
201       {"nolayer", ID_NOLAYER},
202       {"noframes", ID_NOFRAMES},
203       {"style", ID_STYLE},
204       {"noscript", ID_NOSCRIPT},
205       {"plaintext", ID_PLAINTEXT},
206       {"acronym", ID_ACRONYM},
207       {"input", ID_INPUT},
208       {"sup", ID_SUP},
209       {"blockquote", ID_BLOCKQUOTE},
210       {"fieldset", ID_FIELDSET},
211       {"applet", ID_APPLET},
212       {"colgroup", ID_COLGROUP},
213       {"optgroup", ID_OPTGROUP}
214     };
215
216   static const short lookup[] =
217     {
218         -1,    0,    1,   -1,   -1,   -1,    2,    3,
219         -1,    4,   -1,    5,    6,    7,   -1,   -1,
220         -1,   -1,   -1,    8,   -1,   -1,   -1,    9,
221         -1,   -1,   10,   -1,   -1,   11,   -1,   12,
222         13,   14,   15,   -1,   -1, -151,   -1,   18,
223         -1,   19,   -1,   20,   21,  -89,   -2,   22,
224         23,   24,   25,   -1,   -1,   26,   27,   28,
225         29,   30,   31,   32,   33,   34,   -1,   -1,
226         35,   -1,   -1,   -1,   36,   37,   -1,   -1,
227         38,   -1,   39,   40,   41,   -1,   42,   43,
228         -1,   -1,   44,   45,   46,   -1,   47,   48,
229         49,   50,   -1,   -1,   51,   -1,   -1,   -1,
230         -1,   -1,   52,   53,   54,   55,   -1,   56,
231         -1,   -1,   57,   -1,   58,   -1,   59,   60,
232         -1,   61,   -1,   -1,   -1,   -1,   -1,   -1,
233         -1,   -1,   62,   -1,   63,   64,   65,   66,
234         -1,   -1,   -1,   67,   -1,   68,   69,   -1,
235         70,   -1,   71,   -1,   72,   -1,   73,   -1,
236         74,   75,   -1,   -1,   -1,   76,   -1,   -1,
237         -1,   77,   78,   79,   80,   -1,   81,   82,
238         83,   -1,   84,   85,   86,   -1,   87,   -1,
239         -1,   -1,   88,   89,   -1,   -1,   -1,   -1,
240         -1,   -1,   90,   -1,   -1,   91,   -1,   -1,
241         -1,   -1,   -1,   92,   -1,   -1,   -1,   -1,
242         -1,   93,   -1,   94,   -1,   -1,   95,   96,
243         -1,   -1,   97,   -1,   -1,   -1,   -1,   -1,
244         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
245         -1,   98,   -1,   -1,   99,   -1,   -1,   -1,
246         -1,   -1,   -1,  100,   -1,   -1,   -1,   -1,
247         -1,  101,   -1,   -1,   -1,   -1,   -1,   -1,
248         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
249         -1,   -1,   -1,  102,   -1,   -1,   -1,   -1,
250         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
251         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
252         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
253        103,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
254         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
255         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
256         -1,  104
257     };
258
259   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
260     {
261       register int key = hash_tag (str, len);
262
263       if (key <= MAX_HASH_VALUE && key >= 0)
264         {
265           register int index = lookup[key];
266
267           if (index >= 0)
268             {
269               if (len == lengthtable[index])
270                 {
271                   register const char *s = wordlist_tag[index].name;
272
273                   if (*str == *s && !memcmp (str + 1, s + 1, len - 1))
274                     return &wordlist_tag[index];
275                 }
276             }
277           else if (index < -TOTAL_KEYWORDS)
278             {
279               register int offset = - 1 - TOTAL_KEYWORDS - index;
280               register const unsigned char *lengthptr = &lengthtable[TOTAL_KEYWORDS + lookup[offset]];
281               register const struct tags *wordptr = &wordlist_tag[TOTAL_KEYWORDS + lookup[offset]];
282               register const struct tags *wordendptr = wordptr + -lookup[offset + 1];
283
284               while (wordptr < wordendptr)
285                 {
286                   if (len == *lengthptr)
287                     {
288                       register const char *s = wordptr->name;
289
290                       if (*str == *s && !memcmp (str + 1, s + 1, len - 1))
291                         return wordptr;
292                     }
293                   lengthptr++;
294                   wordptr++;
295                 }
296             }
297         }
298     }
299   return 0;
300 }
301
302
303 static const char * const tagList[] = {
304 "",
305     "A",
306     "ABBR",
307     "ACRONYM",
308     "ADDRESS",
309     "APPLET",
310     "AREA",
311     "B",
312     "BASE",
313     "BASEFONT",
314     "BDO",
315     "BIG",
316     "BLOCKQUOTE",
317     "BODY",
318     "BR",
319     "BUTTON",
320     "CANVAS",
321     "CAPTION",
322     "CENTER",
323     "CITE",
324     "CODE",
325     "COL",
326     "COLGROUP",
327     "DD",
328     "DEL",
329     "DFN",
330     "DIR",
331     "DIV",
332     "DL",
333     "DT",
334     "EM",
335     "EMBED",
336     "FIELDSET",
337     "FONT",
338     "FORM",
339     "FRAME",
340     "FRAMESET",
341     "H1",
342     "H2",
343     "H3",
344     "H4",
345     "H5",
346     "H6",
347     "HEAD",
348     "HR",
349     "HTML",
350     "I",
351     "IFRAME",
352     "IMG",
353     "INPUT",
354     "INS",
355     "ISINDEX",
356     "KBD",
357     "KEYGEN",
358     "LABEL",
359     "LAYER",
360     "LEGEND",
361     "LI",
362     "LINK",
363     "MAP",
364     "MARQUEE",
365     "MENU",
366     "META",
367     "NOBR",
368     "NOEMBED",
369     "NOFRAMES",
370     "NOSCRIPT",
371     "NOLAYER",
372     "OBJECT",
373     "OL",
374     "OPTGROUP",
375     "OPTION",
376     "P",
377     "PARAM",
378     "PLAINTEXT",
379     "PRE",
380     "Q",
381     "S",
382     "SAMP",
383     "SCRIPT",
384     "SELECT",
385     "SMALL",
386     "SPAN",
387     "STRIKE",
388     "STRONG",
389     "STYLE",
390     "SUB",
391     "SUP",
392     "TABLE",
393     "TBODY",
394     "TD",
395     "TEXTAREA",
396     "TFOOT",
397     "TH",
398     "THEAD",
399     "TITLE",
400     "TR",
401     "TT",
402     "U",
403     "UL",
404     "VAR",
405     "WBR",
406     "XMP",
407 "TEXT",
408 "COMMENT",
409     "/A",
410     "/ABBR",
411     "/ACRONYM",
412     "/ADDRESS",
413     "/APPLET",
414     "/AREA",
415     "/B",
416     "/BASE",
417     "/BASEFONT",
418     "/BDO",
419     "/BIG",
420     "/BLOCKQUOTE",
421     "/BODY",
422     "/BR",
423     "/BUTTON",
424     "/CANVAS",
425     "/CAPTION",
426     "/CENTER",
427     "/CITE",
428     "/CODE",
429     "/COL",
430     "/COLGROUP",
431     "/DD",
432     "/DEL",
433     "/DFN",
434     "/DIR",
435     "/DIV",
436     "/DL",
437     "/DT",
438     "/EM",
439     "/EMBED",
440     "/FIELDSET",
441     "/FONT",
442     "/FORM",
443     "/FRAME",
444     "/FRAMESET",
445     "/H1",
446     "/H2",
447     "/H3",
448     "/H4",
449     "/H5",
450     "/H6",
451     "/HEAD",
452     "/HR",
453     "/HTML",
454     "/I",
455     "/IFRAME",
456     "/IMG",
457     "/INPUT",
458     "/INS",
459     "/ISINDEX",
460     "/KBD",
461     "/KEYGEN",
462     "/LABEL",
463     "/LAYER",
464     "/LEGEND",
465     "/LI",
466     "/LINK",
467     "/MAP",
468     "/MARQUEE",
469     "/MENU",
470     "/META",
471     "/NOBR",
472     "/NOEMBED",
473     "/NOFRAMES",
474     "/NOSCRIPT",
475     "/NOLAYER",
476     "/OBJECT",
477     "/OL",
478     "/OPTGROUP",
479     "/OPTION",
480     "/P",
481     "/PARAM",
482     "/PLAINTEXT",
483     "/PRE",
484     "/Q",
485     "/S",
486     "/SAMP",
487     "/SCRIPT",
488     "/SELECT",
489     "/SMALL",
490     "/SPAN",
491     "/STRIKE",
492     "/STRONG",
493     "/STYLE",
494     "/SUB",
495     "/SUP",
496     "/TABLE",
497     "/TBODY",
498     "/TD",
499     "/TEXTAREA",
500     "/TFOOT",
501     "/TH",
502     "/THEAD",
503     "/TITLE",
504     "/TR",
505     "/TT",
506     "/U",
507     "/UL",
508     "/VAR",
509     "/WBR",
510     "/XMP",
511     0
512 };
513 DOM::DOMString getTagName(unsigned short id)
514 {
515     if(id > ID_CLOSE_TAG*2) id = ID_CLOSE_TAG+1;
516     return DOM::DOMString(tagList[id]);
517 }