gliv-1.7
[gliv.git] / src / formats.c
blob31189a9a06ae795332a5c48f98b9e01c35305121
1 /* C code produced by gperf version 2.7.2 */
2 /* Command-line: gperf --struct-type --omit-struct-type --key-positions=2,3 --size-multiple=2 --duplicates --lookup-fn-name=ext_to_loader --readonly-tables ../tools/formats.gperf */
4 #include "gliv.h"
6 #include <string.h> /* strcmp(), strlen() */
9 #define TOTAL_KEYWORDS 93
10 #define MIN_WORD_LENGTH 2
11 #define MAX_WORD_LENGTH 5
12 #define MIN_HASH_VALUE 2
13 #define MAX_HASH_VALUE 393
14 /* maximum key range = 392, duplicates = 21 */
16 #ifdef __GNUC__
17 __inline
18 #else
19 #ifdef __cplusplus
20 inline
21 #endif
22 #endif
23 static unsigned int
24 hash (str, len)
25 register const char *str;
26 register unsigned int len;
28 static const unsigned short asso_values[] =
30 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
31 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
32 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
33 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
34 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
35 210, 394, 394, 394, 394, 0, 394, 394, 394, 394,
36 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
37 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
38 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
39 394, 394, 394, 394, 394, 394, 394, 225, 195, 30,
40 165, 35, 50, 70, 394, 110, 394, 394, 55, 25,
41 130, 110, 0, 394, 394, 60, 3, 0, 105, 205,
42 10, 5, 20, 394, 394, 394, 394, 394, 394, 394,
43 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
44 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
45 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
46 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
47 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
48 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
49 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
50 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
51 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
52 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
53 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
54 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
55 394, 394, 394, 394, 394, 394
57 register int hval = len;
59 switch (hval)
61 default:
62 case 3:
63 hval += asso_values[(unsigned char)str[2]];
64 case 2:
65 hval += asso_values[(unsigned char)str[1]];
66 break;
68 return hval;
71 #ifdef __GNUC__
72 __inline
73 #endif
74 const struct format *
75 ext_to_loader (str, len)
76 register const char *str;
77 register unsigned int len;
79 static const struct format wordlist[] =
81 {"p7", LOADER_NORMAL},
82 {"ept", LOADER_NORMAL},
83 {"iptc", LOADER_NORMAL},
84 {"fpx", LOADER_NORMAL},
85 {"gz", LOADER_DECOMP},
86 {"bmp", LOADER_NORMAL},
87 {"xpm", LOADER_NORMAL},
88 {"ppm", LOADER_NORMAL},
89 {"htm", LOADER_NORMAL},
90 {"html", LOADER_NORMAL},
91 {"jpc", LOADER_NORMAL},
92 {"mpc", LOADER_NORMAL},
93 {"cmyk", LOADER_NORMAL},
94 {"sct", LOADER_NORMAL},
95 {"jpe", LOADER_NORMAL},
96 {"jpeg", LOADER_NORMAL},
97 {"dcx", LOADER_NORMAL},
98 {"pcx", LOADER_NORMAL},
99 {"ttf", LOADER_NORMAL},
100 {"dcm", LOADER_NORMAL},
101 {"gplt", LOADER_NORMAL},
102 {"ps", LOADER_NORMAL},
103 {"eps", LOADER_NORMAL},
104 {"eps2", LOADER_NORMAL},
105 {"epsi", LOADER_NORMAL},
106 {"epsf", LOADER_NORMAL},
107 {"jpg", LOADER_NORMAL},
108 {"wpg", LOADER_NORMAL},
109 {"hpgl", LOADER_NORMAL},
110 {"emf", LOADER_NORMAL},
111 {"wmf", LOADER_NORMAL},
112 {"xcf", LOADER_NORMAL},
113 {"pcl", LOADER_NORMAL},
114 {"rle", LOADER_NORMAL},
115 {"cgm", LOADER_NORMAL},
116 {"pgm", LOADER_NORMAL},
117 {"iff", LOADER_NORMAL},
118 {"yuv", LOADER_NORMAL},
119 {"mtv", LOADER_NORMAL},
120 {"epi", LOADER_NORMAL},
121 {"dot", LOADER_NORMAL},
122 {"fits", LOADER_NORMAL},
123 {"pix", LOADER_NORMAL},
124 {"sun", LOADER_NORMAL},
125 {"tim", LOADER_NORMAL},
126 {"ico", LOADER_NORMAL},
127 {"pict", LOADER_NORMAL},
128 {"dicom", LOADER_NORMAL},
129 {"vicar", LOADER_NORMAL},
130 {"bie", LOADER_NORMAL},
131 {"pnm", LOADER_NORMAL},
132 {"gif", LOADER_NORMAL},
133 {"tif", LOADER_NORMAL},
134 {"jif", LOADER_NORMAL},
135 {"miff", LOADER_NORMAL},
136 {"viff", LOADER_NORMAL},
137 {"tiff", LOADER_NORMAL},
138 {"avs", LOADER_NORMAL},
139 {"epdf", LOADER_NORMAL},
140 {"mvg", LOADER_NORMAL},
141 {"svg", LOADER_NORMAL},
142 {"fig", LOADER_NORMAL},
143 {"sgi", LOADER_NORMAL},
144 {"pcd", LOADER_NORMAL},
145 {"jng", LOADER_NORMAL},
146 {"png", LOADER_NORMAL},
147 {"mng", LOADER_NORMAL},
148 {"pwp", LOADER_NORMAL},
149 {"jp2", LOADER_NORMAL},
150 {"hdf", LOADER_NORMAL},
151 {"pdf", LOADER_NORMAL},
152 {"pbm", LOADER_NORMAL},
153 {"xbm", LOADER_NORMAL},
154 {"wbmp", LOADER_NORMAL},
155 {"psd", LOADER_NORMAL},
156 {"bz2", LOADER_DECOMP},
157 {"fax", LOADER_NORMAL},
158 {"ani", LOADER_NORMAL},
159 {"pfb", LOADER_NORMAL},
160 {"ilbm", LOADER_NORMAL},
161 {"sfw", LOADER_NORMAL},
162 {"rgb", LOADER_NORMAL},
163 {"ps2", LOADER_NORMAL},
164 {"pfa", LOADER_NORMAL},
165 {"rla", LOADER_NORMAL},
166 {"ras", LOADER_NORMAL},
167 {"tga", LOADER_NORMAL},
168 {"dib", LOADER_NORMAL},
169 {"8bim", LOADER_NORMAL},
170 {"jbig", LOADER_NORMAL},
171 {"pdb", LOADER_NORMAL},
172 {"xwd", LOADER_NORMAL},
173 {"rad", LOADER_NORMAL}
176 static const short lookup[] =
178 -1, -1, 0, -1, -1, -1, 1, 2,
179 -1, -1, -1, -1, -1, 3, -1, -1,
180 -1, -1, -1, -1, -1, -1, 4, -1,
181 -1, -1, -1, -1, -123, -88, -3, 8,
182 9, -134, 12, -1, 13, -1, 14, 15,
183 -83, -2, -1, -138, -77, -2, -1, -1,
184 -1, -1, -1, -1, -1, -1, -1, -1,
185 18, -1, 19, 20, -1, -1, 21, 22,
186 -159, -70, -3, -1, -1, -1, -1, -1,
187 -1, -169, 28, -67, -2, -1, -173, -64,
188 -2, -1, -1, 31, -1, -1, -1, -1,
189 32, -1, -1, -1, -1, 33, -1, -1,
190 -1, -1, -193, -59, -2, -1, -1, 36,
191 -1, -1, -1, -1, 37, -1, -1, 38,
192 -1, 39, -1, -1, 40, 41, -1, -1,
193 -1, -1, -1, 42, -1, -1, -1, -1,
194 -1, -1, -1, -1, -1, 43, -1, -1,
195 -1, -1, 44, -1, -1, -1, -1, 45,
196 46, -240, -46, -2, 49, -1, -1, -1,
197 -1, -1, -1, -1, -1, -1, 50, -1,
198 -1, -1, -1, -264, -259, -39, -3, -1,
199 57, 58, -42, -3, -1, -1, -1, -1,
200 -1, -1, -273, -34, -2, -1, -1, -278,
201 -32, -2, -1, -1, -1, -1, -1, -1,
202 -1, -1, -1, -1, -1, -1, 63, -1,
203 -1, -1, -1, -298, -29, -3, -1, -1,
204 67, -1, -1, -1, -1, 68, -1, -1,
205 -1, -1, -313, -24, -2, -1, -1, -319,
206 73, -22, -2, -1, 74, -1, -1, -1,
207 -1, 75, -1, -1, -1, -1, 76, -1,
208 -1, -1, -1, 77, -1, -1, -1, -1,
209 78, -1, -1, -1, -1, -1, 79, -1,
210 -1, -1, 80, -1, -1, -1, -1, -1,
211 -1, -1, -1, -1, 81, -1, -1, -1,
212 -1, 82, -1, -1, -1, -1, 83, -1,
213 -1, -1, -1, 84, -1, -1, -1, -1,
214 85, -1, -1, -1, -1, -1, -1, -1,
215 -1, -1, 86, -1, -1, -1, -1, -1,
216 -1, -1, -1, -1, 87, -404, -5, -2,
217 -1, -1, -1, -1, -1, -1, -1, -1,
218 -1, -1, -1, -1, -1, -1, -1, -1,
219 -1, -1, -1, -1, -1, -1, -1, -1,
220 -1, -1, -1, -1, -1, -1, -1, -1,
221 -1, -1, -1, -1, -1, -1, -1, -1,
222 -1, -1, -1, -1, -1, -1, -1, -1,
223 -1, -1, -1, 90, -1, -1, -1, -1,
224 -1, -1, -1, -1, -1, 91, -1, -1,
225 -1, -1, -1, -1, -1, -1, -1, -1,
226 -1, -1, -1, -1, -1, -1, -1, -1,
227 -1, 92
230 if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
232 register int key = hash (str, len);
234 if (key <= MAX_HASH_VALUE && key >= 0)
236 register int index = lookup[key];
238 if (index >= 0)
240 register const char *s = wordlist[index].name;
242 if (*str == *s && !strcmp (str + 1, s + 1))
243 return &wordlist[index];
245 else if (index < -TOTAL_KEYWORDS)
247 register int offset = - 1 - TOTAL_KEYWORDS - index;
248 register const struct format *wordptr = &wordlist[TOTAL_KEYWORDS + lookup[offset]];
249 register const struct format *wordendptr = wordptr + -lookup[offset + 1];
251 while (wordptr < wordendptr)
253 register const char *s = wordptr->name;
255 if (*str == *s && !strcmp (str + 1, s + 1))
256 return wordptr;
257 wordptr++;
262 return 0;