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