1 /* ANSI-C code produced by gperf version 3.0.3 */
2 /* Command-line: gperf -o -C -E -k '1-6,$' -j1 -D -N libc_name_p -L ANSI-C cfns.gperf  */
3 
4 #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
5       && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
6       && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
7       && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
8       && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
9       && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
10       && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
11       && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
12       && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
13       && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
14       && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
15       && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
16       && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
17       && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
18       && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
19       && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
20       && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
21       && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
22       && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
23       && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
24       && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
25       && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
26       && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
27 /* The character set is not based on ISO-646.  */
28 #error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
29 #endif
30 
31 #line 1 "cfns.gperf"
32 
33 /* Copyright (C) 2000-2013 Free Software Foundation, Inc.
34 
35 This file is part of GCC.
36 
37 GCC is free software; you can redistribute it and/or modify it under
38 the terms of the GNU General Public License as published by the Free
39 Software Foundation; either version 3, or (at your option) any later
40 version.
41 
42 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
43 WARRANTY; without even the implied warranty of MERCHANTABILITY or
44 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
45 for more details.
46 
47 You should have received a copy of the GNU General Public License
48 along with GCC; see the file COPYING3.  If not see
49 <http://www.gnu.org/licenses/>.  */
50 #ifdef __GNUC__
51 __inline
52 #endif
53 static unsigned int hash (const char *, unsigned int);
54 #ifdef __GNUC__
55 __inline
56 #ifdef __GNUC_STDC_INLINE__
57 __attribute__ ((__gnu_inline__)) __attribute__((__always_inline__))
58 #endif
59 #endif
60 const char * libc_name_p (const char *, unsigned int);
61 /* maximum key range = 391, duplicates = 0 */
62 
63 #ifdef __GNUC__
64 __inline
65 #else
66 #ifdef __cplusplus
67 inline
68 #endif
69 #endif
70 static unsigned int
hash(register const char * str,register unsigned int len)71 hash (register const char *str, register unsigned int len)
72 {
73   static const unsigned short asso_values[] =
74     {
75       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
76       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
77       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
78       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
79       400, 400, 400, 400, 400, 400, 400, 400,   0,   0,
80         1, 400, 400, 400, 400, 400, 400, 400, 400, 400,
81       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
82       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
83       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
84       400, 400, 400, 400, 400, 400, 400,  28,  90,   0,
85        95,   0,  51,  93, 114,  26, 109, 124,   5,   1,
86         6,  13,  37, 128,   3,   0,   0,  49,  38,   0,
87       104,  45,   0, 400, 400, 400, 400, 400, 400, 400,
88       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
89       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
90       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
91       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
92       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
93       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
94       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
95       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
96       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
97       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
98       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
99       400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
100       400, 400, 400, 400, 400, 400, 400
101     };
102   register int hval = len;
103 
104   switch (hval)
105     {
106       default:
107         hval += asso_values[(unsigned char)str[5]+1];
108       /*FALLTHROUGH*/
109       case 5:
110         hval += asso_values[(unsigned char)str[4]];
111       /*FALLTHROUGH*/
112       case 4:
113         hval += asso_values[(unsigned char)str[3]];
114       /*FALLTHROUGH*/
115       case 3:
116         hval += asso_values[(unsigned char)str[2]];
117       /*FALLTHROUGH*/
118       case 2:
119         hval += asso_values[(unsigned char)str[1]];
120       /*FALLTHROUGH*/
121       case 1:
122         hval += asso_values[(unsigned char)str[0]];
123         break;
124     }
125   return hval + asso_values[(unsigned char)str[len - 1]];
126 }
127 
128 #ifdef __GNUC__
129 __inline
130 #ifdef __GNUC_STDC_INLINE__
131 __attribute__ ((__gnu_inline__))
132 #endif
133 #endif
134 const char *
libc_name_p(register const char * str,register unsigned int len)135 libc_name_p (register const char *str, register unsigned int len)
136 {
137   enum
138     {
139       TOTAL_KEYWORDS = 156,
140       MIN_WORD_LENGTH = 3,
141       MAX_WORD_LENGTH = 10,
142       MIN_HASH_VALUE = 9,
143       MAX_HASH_VALUE = 399
144     };
145 
146   static const char * const wordlist[] =
147     {
148       "wcsstr",
149       "strstr",
150       "cos",
151       "towctrans",
152       "memmove",
153       "wcstol",
154       "wcscoll",
155       "wcstombs",
156       "strtol",
157       "strcoll",
158       "wcslen",
159       "time",
160       "ctime",
161       "strlen",
162       "iswctype",
163       "wmemchr",
164       "wcsrchr",
165       "ceil",
166       "sin",
167       "strrchr",
168       "tan",
169       "iscntrl",
170       "acos",
171       "wmemmove",
172       "wcsrtombs",
173       "wctrans",
174       "wmemcmp",
175       "pow",
176       "atol",
177       "wcsncmp",
178       "memset",
179       "free",
180       "strncmp",
181       "wmemset",
182       "wcsspn",
183       "wcstoul",
184       "strspn",
185       "strtoul",
186       "asctime",
187       "atan2",
188       "asin",
189       "atan",
190       "ferror",
191       "iswalnum",
192       "wcscat",
193       "realloc",
194       "strcat",
195       "wcscpy",
196       "memcpy",
197       "strcpy",
198       "tolower",
199       "floor",
200       "iswcntrl",
201       "atoi",
202       "clearerr",
203       "swscanf",
204       "wcsncat",
205       "islower",
206       "strncat",
207       "btowc",
208       "localtime",
209       "wctomb",
210       "isalnum",
211       "isprint",
212       "mblen",
213       "wcstod",
214       "log10",
215       "strtod",
216       "wcrtomb",
217       "abs",
218       "setlocale",
219       "wcschr",
220       "mbrlen",
221       "memchr",
222       "strchr",
223       "labs",
224       "iswpunct",
225       "exit",
226       "sqrt",
227       "swprintf",
228       "wctype",
229       "mbsrtowcs",
230       "wcscspn",
231       "getenv",
232       "strcspn",
233       "towlower",
234       "atof",
235       "wcstok",
236       "localeconv",
237       "strtok",
238       "calloc",
239       "malloc",
240       "isalpha",
241       "iswlower",
242       "iswspace",
243       "wcsxfrm",
244       "signal",
245       "strxfrm",
246       "wcsftime",
247       "feof",
248       "strftime",
249       "wcscmp",
250       "fabs",
251       "memcmp",
252       "strcmp",
253       "vsprintf",
254       "fwide",
255       "gmtime",
256       "sprintf",
257       "exp",
258       "wmemcpy",
259       "iswprint",
260       "sscanf",
261       "wcsncpy",
262       "strncpy",
263       "isspace",
264       "toupper",
265       "wctob",
266       "div",
267       "mbtowc",
268       "ldiv",
269       "log",
270       "mktime",
271       "isupper",
272       "atexit",
273       "modf",
274       "mbstowcs",
275       "mbrtowc",
276       "ispunct",
277       "iswalpha",
278       "setvbuf",
279       "rand",
280       "srand",
281       "frexp",
282       "towupper",
283       "mbsinit",
284       "cosh",
285       "vswprintf",
286       "iswupper",
287       "wcspbrk",
288       "fmod",
289       "strpbrk",
290       "sinh",
291       "tanh",
292       "iswdigit",
293       "clock",
294       "longjmp",
295       "ldexp",
296       "setbuf",
297       "fseek",
298       "iswgraph",
299       "difftime",
300       "iswxdigit",
301       "isdigit",
302       "isxdigit",
303       "isgraph"
304     };
305 
306   static const short lookup[] =
307     {
308        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,
309        -1,  -1,   1,  -1,  -1,  -1,   2,  -1,  -1,  -1,
310        -1,  -1,   3,   4,  -1,   5,   6,   7,   8,   9,
311        10,  11,  12,  13,  14,  -1,  -1,  -1,  15,  16,
312        17,  18,  19,  20,  21,  22,  -1,  -1,  23,  24,
313        -1,  25,  26,  27,  -1,  28,  29,  30,  31,  32,
314        33,  -1,  34,  35,  -1,  36,  37,  38,  -1,  39,
315        40,  -1,  41,  -1,  -1,  -1,  -1,  -1,  -1,  42,
316        -1,  43,  -1,  44,  -1,  45,  46,  -1,  47,  -1,
317        48,  49,  50,  51,  52,  -1,  -1,  53,  54,  55,
318        -1,  -1,  -1,  56,  -1,  57,  58,  -1,  59,  60,
319        61,  62,  63,  64,  65,  -1,  66,  67,  -1,  68,
320        -1,  69,  70,  71,  72,  73,  74,  75,  -1,  -1,
321        -1,  -1,  -1,  76,  77,  78,  -1,  -1,  79,  80,
322        81,  82,  -1,  83,  84,  -1,  85,  86,  87,  -1,
323        88,  89,  90,  91,  -1,  -1,  -1,  92,  -1,  93,
324        -1,  94,  -1,  95,  -1,  96,  97,  -1,  98,  -1,
325        99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
326        -1, 109, 110, 111, 112,  -1, 113,  -1,  -1, 114,
327        -1,  -1,  -1, 115,  -1,  -1,  -1, 116, 117,  -1,
328       118,  -1,  -1,  -1,  -1, 119, 120, 121,  -1, 122,
329       123,  -1,  -1, 124,  -1, 125, 126,  -1, 127,  -1,
330       128,  -1,  -1, 129, 130,  -1,  -1,  -1,  -1,  -1,
331        -1, 131, 132,  -1,  -1,  -1,  -1, 133, 134, 135,
332        -1,  -1,  -1,  -1,  -1, 136,  -1, 137,  -1,  -1,
333        -1, 138,  -1,  -1,  -1,  -1,  -1,  -1, 139, 140,
334        -1, 141,  -1,  -1, 142,  -1, 143,  -1,  -1, 144,
335        -1, 145,  -1,  -1,  -1,  -1, 146,  -1,  -1,  -1,
336        -1,  -1,  -1, 147,  -1,  -1,  -1,  -1,  -1, 148,
337        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
338        -1,  -1,  -1,  -1, 149,  -1,  -1,  -1,  -1,  -1,
339        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
340        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
341        -1,  -1,  -1,  -1, 150,  -1,  -1,  -1,  -1,  -1,
342       151,  -1,  -1, 152,  -1,  -1,  -1,  -1,  -1,  -1,
343        -1,  -1,  -1,  -1,  -1,  -1, 153,  -1,  -1,  -1,
344        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
345        -1,  -1,  -1, 154,  -1,  -1,  -1,  -1,  -1,  -1,
346        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
347        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 155
348     };
349 
350   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
351     {
352       register int key = hash (str, len);
353 
354       if (key <= MAX_HASH_VALUE && key >= 0)
355         {
356           register int index = lookup[key];
357 
358           if (index >= 0)
359             {
360               register const char *s = wordlist[index];
361 
362               if (*str == *s && !strcmp (str + 1, s + 1))
363                 return s;
364             }
365         }
366     }
367   return 0;
368 }
369