Reviewed by Darin.
[WebKit-https.git] / WebCore / khtml / misc / htmlattrs.c
1 /* ANSI-C code produced by gperf version 2.7.2 */
2 /* Command-line: gperf -c -a -L ANSI-C -D -E -C -o -t -k '*' -NfindAttr -Hhash_attr -Wwordlist_attr -s 2 htmlattrs.gperf  */
3 /* This file is automatically generated from
4 #htmlattrs.in by makeattrs, do not edit */
5 /* Copyright 1999 Lars Knoll */
6 #include "htmlattrs.h"
7 struct attrs {
8     const char *name;
9     int id;
10 };
11 /* maximum key range = 1379, duplicates = 1 */
12
13 #ifdef __GNUC__
14 __inline
15 #else
16 #ifdef __cplusplus
17 inline
18 #endif
19 #endif
20 static unsigned int
21 hash_attr (register const char *str, register unsigned int len)
22 {
23   static const unsigned short asso_values[] =
24     {
25       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
26       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
27       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
28       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
29       1382, 1382, 1382, 1382, 1382,   10, 1382, 1382, 1382, 1382,
30       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
31       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
32       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
33       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
34       1382, 1382, 1382, 1382, 1382, 1382, 1382,   30,  170,   10,
35         45,    0,  120,   55,  100,    0,    0,   90,   30,  360,
36          0,    0,    0,    0,  215,    5,    0,   65,   20,   35,
37         25,   15,    0, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
38       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
39       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
40       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
41       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
42       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
43       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
44       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
45       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
46       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
47       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
48       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
49       1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
50       1382, 1382, 1382, 1382, 1382, 1382
51     };
52   register int hval = len;
53
54   switch (hval)
55     {
56       default:
57       case 15:
58         hval += asso_values[(unsigned char)str[14]];
59       case 14:
60         hval += asso_values[(unsigned char)str[13]];
61       case 13:
62         hval += asso_values[(unsigned char)str[12]];
63       case 12:
64         hval += asso_values[(unsigned char)str[11]];
65       case 11:
66         hval += asso_values[(unsigned char)str[10]];
67       case 10:
68         hval += asso_values[(unsigned char)str[9]];
69       case 9:
70         hval += asso_values[(unsigned char)str[8]];
71       case 8:
72         hval += asso_values[(unsigned char)str[7]];
73       case 7:
74         hval += asso_values[(unsigned char)str[6]];
75       case 6:
76         hval += asso_values[(unsigned char)str[5]];
77       case 5:
78         hval += asso_values[(unsigned char)str[4]];
79       case 4:
80         hval += asso_values[(unsigned char)str[3]];
81       case 3:
82         hval += asso_values[(unsigned char)str[2]];
83       case 2:
84         hval += asso_values[(unsigned char)str[1]];
85       case 1:
86         hval += asso_values[(unsigned char)str[0]];
87         break;
88     }
89   return hval;
90 }
91
92 #ifdef __GNUC__
93 __inline
94 #endif
95 const struct attrs *
96 findAttr (register const char *str, register unsigned int len)
97 {
98   enum
99     {
100       TOTAL_KEYWORDS = 181,
101       MIN_WORD_LENGTH = 2,
102       MAX_WORD_LENGTH = 15,
103       MIN_HASH_VALUE = 3,
104       MAX_HASH_VALUE = 1381
105     };
106
107   static const struct attrs wordlist_attr[] =
108     {
109       {"top", ATTR_TOP},
110       {"size", ATTR_SIZE},
111       {"cite", ATTR_CITE},
112       {"content", ATTR_CONTENT},
113       {"type", ATTR_TYPE},
114       {"scope", ATTR_SCOPE},
115       {"text", ATTR_TEXT},
116       {"oncopy", ATTR_ONCOPY},
117       {"enctype", ATTR_ENCTYPE},
118       {"loop", ATTR_LOOP},
119       {"title", ATTR_TITLE},
120       {"span", ATTR_SPAN},
121       {"onpaste", ATTR_ONPASTE},
122       {"action", ATTR_ACTION},
123       {"id", ATTR_ID},
124       {"cols", ATTR_COLS},
125       {"onselect", ATTR_ONSELECT},
126       {"style", ATTR_STYLE},
127       {"accept", ATTR_ACCEPT},
128       {"code", ATTR_CODE},
129       {"nosave", ATTR_NOSAVE},
130       {"alt", ATTR_ALT},
131       {"axis", ATTR_AXIS},
132       {"plain", ATTR_PLAIN},
133       {"vspace", ATTR_VSPACE},
134       {"oninput", ATTR_ONINPUT},
135       {"codetype", ATTR_CODETYPE},
136       {"oncut", ATTR_ONCUT},
137       {"colspan", ATTR_COLSPAN},
138       {"class", ATTR_CLASS},
139       {"z-index", ATTR_Z_INDEX},
140       {"selected", ATTR_SELECTED},
141       {"pagey", ATTR_PAGEY},
142       {"data", ATTR_DATA},
143       {"onload", ATTR_ONLOAD},
144       {"pagex", ATTR_PAGEX},
145       {"lang", ATTR_LANG},
146       {"align", ATTR_ALIGN},
147       {"link", ATTR_LINK},
148       {"keytype", ATTR_KEYTYPE},
149       {"classid", ATTR_CLASSID},
150       {"shape", ATTR_SHAPE},
151       {"valign", ATTR_VALIGN},
152       {"vlink", ATTR_VLINK},
153       {"onclick", ATTR_ONCLICK},
154       {"value", ATTR_VALUE},
155       {"hspace", ATTR_HSPACE},
156       {"longdesc", ATTR_LONGDESC},
157       {"left", ATTR_LEFT},
158       {"alink", ATTR_ALINK},
159       {"autosave", ATTR_AUTOSAVE},
160       {"face", ATTR_FACE},
161       {"valuetype", ATTR_VALUETYPE},
162       {"accesskey", ATTR_ACCESSKEY},
163       {"onkeyup", ATTR_ONKEYUP},
164       {"onunload", ATTR_ONUNLOAD},
165       {"cellspacing", ATTR_CELLSPACING},
166       {"width", ATTR_WIDTH},
167       {"object", ATTR_OBJECT},
168       {"noshade", ATTR_NOSHADE},
169       {"onkeydown", ATTR_ONKEYDOWN},
170       {"hidden", ATTR_HIDDEN},
171       {"unknown", ATTR_UNKNOWN},
172       {"onchange", ATTR_ONCHANGE},
173       {"http-equiv", ATTR_HTTP_EQUIV},
174       {"onfocus", ATTR_ONFOCUS},
175       {"onreset", ATTR_ONRESET},
176       {"noresize", ATTR_NORESIZE},
177       {"onresize", ATTR_ONRESIZE},
178       {"src", ATTR_SRC},
179       {"rev", ATTR_REV},
180       {"precision", ATTR_PRECISION},
181       {"pluginpage", ATTR_PLUGINPAGE},
182       {"version", ATTR_VERSION},
183       {"rel", ATTR_REL},
184       {"visibility", ATTR_VISIBILITY},
185       {"pluginspage", ATTR_PLUGINSPAGE},
186       {"start", ATTR_START},
187       {"cellpadding", ATTR_CELLPADDING},
188       {"rows", ATTR_ROWS},
189       {"color", ATTR_COLOR},
190       {"height", ATTR_HEIGHT},
191       {"checked", ATTR_CHECKED},
192       {"dir", ATTR_DIR},
193       {"challenge", ATTR_CHALLENGE},
194       {"label", ATTR_LABEL},
195       {"ondrop", ATTR_ONDROP},
196       {"codebase", ATTR_CODEBASE},
197       {"standby", ATTR_STANDBY},
198       {"language", ATTR_LANGUAGE},
199       {"tabindex", ATTR_TABINDEX},
200       {"direction", ATTR_DIRECTION},
201       {"coords", ATTR_COORDS},
202       {"wrap", ATTR_WRAP},
203       {"nowrap", ATTR_NOWRAP},
204       {"clear", ATTR_CLEAR},
205       {"rowspan", ATTR_ROWSPAN},
206       {"onscroll", ATTR_ONSCROLL},
207       {"contenteditable", ATTR_CONTENTEDITABLE},
208       {"target", ATTR_TARGET},
209       {"onselectstart", ATTR_ONSELECTSTART},
210       {"rules", ATTR_RULES},
211       {"results", ATTR_RESULTS},
212       {"disabled", ATTR_DISABLED},
213       {"declare", ATTR_DECLARE},
214       {"for", ATTR_FOR},
215       {"truespeed", ATTR_TRUESPEED},
216       {"onkeypress", ATTR_ONKEYPRESS},
217       {"readonly", ATTR_READONLY},
218       {"ondrag", ATTR_ONDRAG},
219       {"scrolling", ATTR_SCROLLING},
220       {"char", ATTR_CHAR},
221       {"min", ATTR_MIN},
222       {"charset", ATTR_CHARSET},
223       {"onsearch", ATTR_ONSEARCH},
224       {"profile", ATTR_PROFILE},
225       {"archive", ATTR_ARCHIVE},
226       {"composite", ATTR_COMPOSITE},
227       {"defer", ATTR_DEFER},
228       {"name", ATTR_NAME},
229       {"ondblclick", ATTR_ONDBLCLICK},
230       {"ondragend", ATTR_ONDRAGEND},
231       {"ismap", ATTR_ISMAP},
232       {"headers", ATTR_HEADERS},
233       {"compact", ATTR_COMPACT},
234       {"max", ATTR_MAX},
235       {"scrolldelay", ATTR_SCROLLDELAY},
236       {"onabort", ATTR_ONABORT},
237       {"accept-charset", ATTR_ACCEPT_CHARSET},
238       {"ondragleave", ATTR_ONDRAGLEAVE},
239       {"href", ATTR_HREF},
240       {"media", ATTR_MEDIA},
241       {"nohref", ATTR_NOHREF},
242       {"datetime", ATTR_DATETIME},
243       {"usemap", ATTR_USEMAP},
244       {"pluginurl", ATTR_PLUGINURL},
245       {"placeholder", ATTR_PLACEHOLDER},
246       {"oversrc", ATTR_OVERSRC},
247       {"oncontextmenu", ATTR_ONCONTEXTMENU},
248       {"scheme", ATTR_SCHEME},
249       {"onblur", ATTR_ONBLUR},
250       {"bgcolor", ATTR_BGCOLOR},
251       {"multiple", ATTR_MULTIPLE},
252       {"html", ATTR_HTML},
253       {"onmouseup", ATTR_ONMOUSEUP},
254       {"onmouseout", ATTR_ONMOUSEOUT},
255       {"autocomplete", ATTR_AUTOCOMPLETE},
256       {"method", ATTR_METHOD},
257       {"onmousedown", ATTR_ONMOUSEDOWN},
258       {"onbeforecopy", ATTR_ONBEFORECOPY},
259       {"behavior", ATTR_BEHAVIOR},
260       {"onbeforepaste", ATTR_ONBEFOREPASTE},
261       {"hreflang", ATTR_HREFLANG},
262       {"ondragenter", ATTR_ONDRAGENTER},
263       {"prompt", ATTR_PROMPT},
264       {"abbr", ATTR_ABBR},
265       {"ondragover", ATTR_ONDRAGOVER},
266       {"onbeforecut", ATTR_ONBEFORECUT},
267       {"charoff", ATTR_CHAROFF},
268       {"ondragstart", ATTR_ONDRAGSTART},
269       {"onsubmit", ATTR_ONSUBMIT},
270       {"maxlength", ATTR_MAXLENGTH},
271       {"mayscript", ATTR_MAYSCRIPT},
272       {"border", ATTR_BORDER},
273       {"onerror", ATTR_ONERROR},
274       {"incremental", ATTR_INCREMENTAL},
275       {"topmargin", ATTR_TOPMARGIN},
276       {"bgproperties", ATTR_BGPROPERTIES},
277       {"onmouseover", ATTR_ONMOUSEOVER},
278       {"background", ATTR_BACKGROUND},
279       {"cellborder", ATTR_CELLBORDER},
280       {"frame", ATTR_FRAME},
281       {"scrollamount", ATTR_SCROLLAMOUNT},
282       {"leftmargin", ATTR_LEFTMARGIN},
283       {"onmousemove", ATTR_ONMOUSEMOVE},
284       {"marginwidth", ATTR_MARGINWIDTH},
285       {"tableborder", ATTR_TABLEBORDER},
286       {"bordercolor", ATTR_BORDERCOLOR},
287       {"marginheight", ATTR_MARGINHEIGHT},
288       {"summary", ATTR_SUMMARY},
289       {"frameborder", ATTR_FRAMEBORDER}
290     };
291
292   static const short lookup[] =
293     {
294         -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,
295         -1,    1,   -1,   -1,   -1,   -1,    2,   -1,
296         -1,    3,   -1,    4,    5,   -1,   -1,   -1,
297         -1,   -1,   -1,   -1,   -1,    6,   -1,    7,
298          8,   -1,    9,   10,   -1,   -1,   -1,   11,
299         -1,   -1,   12,   -1,   -1,   -1,   13,   14,
300         -1,   15,   -1,   -1,   -1,   16,   -1,   17,
301         18,   -1,   -1,   19,   -1,   20,   -1,   21,
302         22,   23,   -1,   -1,   -1,   -1,   -1,   24,
303         25,   -1,   -1,   -1,   -1,   -1,   26,   -1,
304         27,   -1,   28,   -1,   -1,   29,   -1,   30,
305         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
306         -1,   -1,   31,   -1,   -1,   -1,   -1,   -1,
307         -1,   32,   -1,   -1,   -1,   33,   -1,   34,
308         -1,   -1,   -1,   35,   -1,   -1,   -1,   36,
309         37,   -1,   -1,   -1,   38,   -1,   -1,   39,
310         -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,
311         -1,   -1,   -1,   -1,   41,   42,   -1,   -1,
312         -1,   43,   -1,   44,   -1,   -1,   45,   46,
313         -1,   47,   48,   49,   -1,   -1,   50,   -1,
314         -1,   -1,   -1,   -1,   51,   -1,   -1,   -1,
315         -1,   52,   -1,   -1,   -1,   -1,   53,   -1,
316         -1,   54,   55,   -1,   -1,   56,   -1,   -1,
317         -1,   57,   58,   59,   -1,   -1,   -1,   -1,
318         -1,   -1,   60,   -1,   61,   62,   -1,   -1,
319         -1,   -1,   -1,   63,   -1,   64,   -1,   65,
320         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
321         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
322         -1,   -1,   -1,   66, -411, -114,   -2,   -1,
323         -1,   69,   -1,   -1,   -1,   -1,   70,   71,
324         -1,   -1,   -1,   -1,   -1,   72,   -1,   73,
325         74,   -1,   75,   76,   -1,   -1,   -1,   77,
326         78,   -1,   -1,   79,   80,   81,   82,   83,
327         84,   85,   86,   -1,   87,   -1,   -1,   -1,
328         88,   89,   -1,   -1,   -1,   -1,   90,   91,
329         -1,   92,   -1,   -1,   93,   -1,   94,   -1,
330         -1,   -1,   95,   -1,   96,   -1,   -1,   -1,
331         -1,   -1,   97,   -1,   98,   -1,   -1,   -1,
332         -1,   -1,   99,   -1,  100,   -1,   -1,   -1,
333         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
334        101,   -1,   -1,   -1,   -1,   -1,   -1,  102,
335         -1,   -1,   -1,   -1,   -1,  103,   -1,   -1,
336         -1,  104,  105,  106,  107,   -1,   -1,  108,
337         -1,   -1,   -1,   -1,   -1,   -1,   -1,  109,
338         -1,   -1,  110,   -1,   -1,   -1,   -1,  111,
339         -1,   -1,   -1,  112,   -1,   -1,   -1,  113,
340        114,   -1,   -1,   -1,  115,   -1,   -1,   -1,
341         -1,   -1,   -1,   -1,   -1,   -1,  116,   -1,
342        117,  118,   -1,   -1,   -1,   -1,   -1,   -1,
343         -1,   -1,  119,  120,   -1,   -1,   -1,  121,
344        122,   -1,  123,   -1,   -1,   -1,   -1,   -1,
345         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
346         -1,  124,  125,   -1,   -1,  126,  127,   -1,
347         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
348         -1,   -1,  128,   -1,  129,   -1,   -1,  130,
349        131,  132,   -1,  133,   -1,   -1,   -1,   -1,
350         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
351         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
352         -1,   -1,  134,   -1,   -1,  135,   -1,  136,
353        137,  138,   -1,   -1,   -1,   -1,   -1,   -1,
354         -1,  139,   -1,   -1,   -1,   -1,  140,  141,
355         -1,   -1,   -1,   -1,   -1,  142,  143,   -1,
356         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
357        144,  145,   -1,  146,   -1,   -1,   -1,  147,
358         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
359         -1,  148,   -1,   -1,   -1,   -1,   -1,   -1,
360         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
361         -1,   -1,   -1,   -1,   -1,   -1,  149,  150,
362         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
363         -1,  151,   -1,   -1,   -1,   -1,  152,   -1,
364         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
365         -1,   -1,   -1,  153,   -1,   -1,   -1,   -1,
366         -1,   -1,   -1,   -1,   -1,  154,   -1,   -1,
367         -1,   -1,   -1,   -1,   -1,  155,  156,  157,
368         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
369         -1,   -1,  158,   -1,   -1,   -1,  159,   -1,
370        160,  161,   -1,   -1,   -1,   -1,   -1,   -1,
371         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
372         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
373         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
374         -1,   -1,   -1,   -1,  162,   -1,   -1,   -1,
375         -1,   -1,   -1,  163,  164,   -1,   -1,   -1,
376        165,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
377         -1,   -1,   -1,   -1,   -1,  166,   -1,   -1,
378        167,   -1,   -1,   -1,  168,   -1,   -1,   -1,
379         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
380         -1,   -1,  169,   -1,   -1,   -1,   -1,   -1,
381         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
382         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
383         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
384         -1,   -1,   -1,   -1,   -1,  170,   -1,   -1,
385         -1,   -1,  171,   -1,   -1,   -1,   -1,   -1,
386         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
387         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
388         -1,   -1,   -1,   -1,   -1,  172,   -1,   -1,
389         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
390         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
391         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
392         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
393         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
394         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
395         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
396         -1,   -1,   -1,   -1,  173,  174,   -1,   -1,
397         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
398         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
399         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
400         -1,   -1,   -1,  175,   -1,   -1,   -1,   -1,
401         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
402         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
403         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
404         -1,   -1,   -1,   -1,   -1,   -1,  176,   -1,
405         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
406         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
407         -1,   -1,   -1,   -1,   -1,   -1,   -1,  177,
408         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
409         -1,   -1,   -1,   -1,   -1,   -1,   -1,  178,
410         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
411         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
412         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
413         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
414         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
415         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
416         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
417         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
418         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
419         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
420         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
421         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
422         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
423         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
424         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
425         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
426         -1,  179,   -1,   -1,   -1,   -1,   -1,   -1,
427         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
428         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
429         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
430         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
431         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
432         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
433         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
434         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
435         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
436         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
437         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
438         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
439         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
440         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
441         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
442         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
443         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
444         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
445         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
446         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
447         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
448         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
449         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
450         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
451         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
452         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
453         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
454         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
455         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
456         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
457         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
458         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
459         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
460         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
461         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
462         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
463         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
464         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
465         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
466         -1,   -1,   -1,   -1,   -1,  180
467     };
468
469   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
470     {
471       register int key = hash_attr (str, len);
472
473       if (key <= MAX_HASH_VALUE && key >= 0)
474         {
475           register int index = lookup[key];
476
477           if (index >= 0)
478             {
479               register const char *s = wordlist_attr[index].name;
480
481               if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
482                 return &wordlist_attr[index];
483             }
484           else if (index < -TOTAL_KEYWORDS)
485             {
486               register int offset = - 1 - TOTAL_KEYWORDS - index;
487               register const struct attrs *wordptr = &wordlist_attr[TOTAL_KEYWORDS + lookup[offset]];
488               register const struct attrs *wordendptr = wordptr + -lookup[offset + 1];
489
490               while (wordptr < wordendptr)
491                 {
492                   register const char *s = wordptr->name;
493
494                   if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
495                     return wordptr;
496                   wordptr++;
497                 }
498             }
499         }
500     }
501   return 0;
502 }
503
504
505 static const char * const attrList[] = {
506     "ABBR",
507     "ACCEPT-CHARSET",
508     "ACCEPT",
509     "ACCESSKEY",
510     "ACTION",
511     "ALIGN",
512     "ALINK",
513     "ALT",
514     "ARCHIVE",
515     "AUTOCOMPLETE",
516     "AUTOSAVE",
517     "AXIS",
518     "BACKGROUND",
519     "BEHAVIOR",
520     "BGCOLOR",
521     "BGPROPERTIES",
522     "BORDER",
523     "BORDERCOLOR",
524     "CELLPADDING",
525     "CELLSPACING",
526     "CHAR",
527     "CHALLENGE",
528     "CHAROFF",
529     "CHARSET",
530     "CHECKED",
531     "CELLBORDER",
532     "CITE",
533     "CLASS",
534     "CLASSID",
535     "CLEAR",
536     "CODE",
537     "CODEBASE",
538     "CODETYPE",
539     "COLOR",
540     "COLS",
541     "COLSPAN",
542     "COMPACT",
543     "COMPOSITE",
544     "CONTENT",
545     "CONTENTEDITABLE",
546     "COORDS",
547     "DATA",
548     "DATETIME",
549     "DECLARE",
550     "DEFER",
551     "DIR",
552     "DIRECTION",
553     "DISABLED",
554     "ENCTYPE",
555     "FACE",
556     "FOR",
557     "FRAME",
558     "FRAMEBORDER",
559     "HEADERS",
560     "HEIGHT",
561     "HIDDEN",
562     "HREF",
563     "HREFLANG",
564     "HSPACE",
565     "HTML",
566     "HTTP-EQUIV",
567     "ID",
568     "INCREMENTAL",
569     "ISMAP",
570     "KEYTYPE",
571     "LABEL",
572     "LANG",
573     "LANGUAGE",
574     "LEFT",
575     "LEFTMARGIN",
576     "LINK",
577     "LONGDESC",
578     "LOOP",
579     "MARGINHEIGHT",
580     "MARGINWIDTH",
581     "MAX",
582     "MAXLENGTH",
583     "MAYSCRIPT",
584     "MEDIA",
585     "METHOD",
586     "MIN",
587     "MULTIPLE",
588     "NAME",
589     "NOHREF",
590     "NORESIZE",
591     "NOSAVE",
592     "NOSHADE",
593     "NOWRAP",
594     "OBJECT",
595     "ONABORT",
596     "ONBEFORECOPY",
597     "ONBEFORECUT",
598     "ONBEFOREPASTE",
599     "ONBLUR",
600     "ONCHANGE",
601     "ONCLICK",
602     "ONCONTEXTMENU",
603     "ONCOPY",
604     "ONCUT",
605     "ONDBLCLICK",
606     "ONDRAG",
607     "ONDRAGEND",
608     "ONDRAGENTER",
609     "ONDRAGLEAVE",
610     "ONDRAGOVER",
611     "ONDRAGSTART",
612     "ONDROP",
613     "ONERROR",
614     "ONFOCUS",
615     "ONINPUT",
616     "ONKEYDOWN",
617     "ONKEYPRESS",
618     "ONKEYUP",
619     "ONLOAD",
620     "ONMOUSEDOWN",
621     "ONMOUSEMOVE",
622     "ONMOUSEOUT",
623     "ONMOUSEOVER",
624     "ONMOUSEUP",
625     "ONPASTE",
626     "ONRESET",
627     "ONRESIZE",
628     "ONSCROLL",
629     "ONSEARCH",
630     "ONSELECT",
631     "ONSELECTSTART",
632     "ONSUBMIT",
633     "ONUNLOAD",
634     "OVERSRC",
635     "PAGEX",
636     "PAGEY",
637     "PLACEHOLDER",
638     "PLAIN",
639     "PLUGINPAGE",
640     "PLUGINSPAGE",
641     "PLUGINURL",
642     "PRECISION",
643     "PROFILE",
644     "PROMPT",
645     "READONLY",
646     "REL",
647     "RESULTS",
648     "REV",
649     "ROWS",
650     "ROWSPAN",
651     "RULES",
652     "SCHEME",
653     "SCOPE",
654     "SCROLLAMOUNT",
655     "SCROLLDELAY",
656     "SCROLLING",
657     "SELECTED",
658     "SHAPE",
659     "SIZE",
660     "SPAN",
661     "SRC",
662     "STANDBY",
663     "START",
664     "STYLE",
665     "SUMMARY",
666     "TABINDEX",
667     "TABLEBORDER",
668     "TARGET",
669     "TEXT",
670     "TITLE",
671     "TOP",
672     "TOPMARGIN",
673     "TRUESPEED",
674     "TYPE",
675     "UNKNOWN",
676     "USEMAP",
677     "VALIGN",
678     "VALUE",
679     "VALUETYPE",
680     "VERSION",
681     "VISIBILITY",
682     "VLINK",
683     "VSPACE",
684     "WIDTH",
685     "WRAP",
686     "Z-INDEX",
687     0
688 };
689 DOM::DOMString getAttrName(unsigned short id)
690 {
691     return attrList[id-1];
692 }