1 /* ANSI-C code produced by gperf version 3.0.3 */
2 /* Command-line: gperf -L ANSI-C -N hoedown_find_block_tag -c -C -E -S 1 --ignore-case -m100 html_block_names.gperf */
3 /* Computed positions: -k'1-2' */
4
5 #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
6 && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
7 && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
8 && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
9 && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
10 && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
11 && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
12 && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
13 && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
14 && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
15 && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
16 && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
17 && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
18 && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
19 && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
20 && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
21 && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
22 && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
23 && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
24 && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
25 && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
26 && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
27 && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
28 /* The character set is not based on ISO-646. */
29 #error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
30 #endif
31
32 /* maximum key range = 24, duplicates = 0 */
33
34 #ifndef GPERF_DOWNCASE
35 #define GPERF_DOWNCASE 1
36 static unsigned char gperf_downcase[256] =
37 {
38 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
39 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
40 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
41 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
42 60, 61, 62, 63, 64, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
43 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
44 122, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
45 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
46 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
47 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
48 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
49 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
50 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
51 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
52 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
53 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
54 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
55 255
56 };
57 #endif
58
59 #ifndef GPERF_CASE_STRNCMP
60 #define GPERF_CASE_STRNCMP 1
61 static int
gperf_case_strncmp(register const char * s1,register const char * s2,register unsigned int n)62 gperf_case_strncmp (register const char *s1, register const char *s2, register unsigned int n)
63 {
64 for (; n > 0;)
65 {
66 unsigned char c1 = gperf_downcase[(unsigned char)*s1++];
67 unsigned char c2 = gperf_downcase[(unsigned char)*s2++];
68 if (c1 != 0 && c1 == c2)
69 {
70 n--;
71 continue;
72 }
73 return (int)c1 - (int)c2;
74 }
75 return 0;
76 }
77 #endif
78
79 #ifdef __GNUC__
80 __inline
81 #else
82 #ifdef __cplusplus
83 inline
84 #endif
85 #endif
86 static unsigned int
hash(register const char * str,register unsigned int len)87 hash (register const char *str, register unsigned int len)
88 {
89 static const unsigned char asso_values[] =
90 {
91 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
92 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
93 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
94 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
95 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
96 22, 21, 19, 18, 16, 0, 25, 25, 25, 25,
97 25, 25, 25, 25, 25, 25, 1, 25, 0, 25,
98 1, 0, 0, 13, 0, 25, 25, 11, 2, 1,
99 0, 25, 25, 5, 0, 2, 25, 25, 25, 25,
100 25, 25, 25, 25, 25, 25, 25, 25, 1, 25,
101 0, 25, 1, 0, 0, 13, 0, 25, 25, 11,
102 2, 1, 0, 25, 25, 5, 0, 2, 25, 25,
103 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
104 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
105 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
106 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
107 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
108 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
109 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
110 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
111 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
112 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
113 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
114 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
115 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
116 25, 25, 25, 25, 25, 25, 25
117 };
118 register int hval = (int)len;
119
120 switch (hval)
121 {
122 default:
123 hval += asso_values[(unsigned char)str[1]+1];
124 /*FALLTHROUGH*/
125 case 1:
126 hval += asso_values[(unsigned char)str[0]];
127 break;
128 }
129 return hval;
130 }
131
132 #ifdef __GNUC__
133 __inline
134 #ifdef __GNUC_STDC_INLINE__
135 __attribute__ ((__gnu_inline__))
136 #endif
137 #endif
138 const char *
hoedown_find_block_tag(register const char * str,register unsigned int len)139 hoedown_find_block_tag (register const char *str, register unsigned int len)
140 {
141 enum
142 {
143 TOTAL_KEYWORDS = 24,
144 MIN_WORD_LENGTH = 1,
145 MAX_WORD_LENGTH = 10,
146 MIN_HASH_VALUE = 1,
147 MAX_HASH_VALUE = 24
148 };
149
150 if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
151 {
152 register int key = hash (str, len);
153
154 if (key <= MAX_HASH_VALUE && key >= MIN_HASH_VALUE)
155 {
156 register const char *resword;
157
158 switch (key - 1)
159 {
160 case 0:
161 resword = "p";
162 goto compare;
163 case 1:
164 resword = "h6";
165 goto compare;
166 case 2:
167 resword = "div";
168 goto compare;
169 case 3:
170 resword = "del";
171 goto compare;
172 case 4:
173 resword = "form";
174 goto compare;
175 case 5:
176 resword = "table";
177 goto compare;
178 case 6:
179 resword = "figure";
180 goto compare;
181 case 7:
182 resword = "pre";
183 goto compare;
184 case 8:
185 resword = "fieldset";
186 goto compare;
187 case 9:
188 resword = "noscript";
189 goto compare;
190 case 10:
191 resword = "script";
192 goto compare;
193 case 11:
194 resword = "style";
195 goto compare;
196 case 12:
197 resword = "dl";
198 goto compare;
199 case 13:
200 resword = "ol";
201 goto compare;
202 case 14:
203 resword = "ul";
204 goto compare;
205 case 15:
206 resword = "math";
207 goto compare;
208 case 16:
209 resword = "ins";
210 goto compare;
211 case 17:
212 resword = "h5";
213 goto compare;
214 case 18:
215 resword = "iframe";
216 goto compare;
217 case 19:
218 resword = "h4";
219 goto compare;
220 case 20:
221 resword = "h3";
222 goto compare;
223 case 21:
224 resword = "blockquote";
225 goto compare;
226 case 22:
227 resword = "h2";
228 goto compare;
229 case 23:
230 resword = "h1";
231 goto compare;
232 }
233 return 0;
234 compare:
235 if ((((unsigned char)*str ^ (unsigned char)*resword) & ~32) == 0 && !gperf_case_strncmp (str, resword, len) && resword[len] == '\0')
236 return resword;
237 }
238 }
239 return 0;
240 }
241