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, 2003 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 #endif 57 const char * libc_name_p (const char *, unsigned int); 58 /* maximum key range = 391, duplicates = 0 */ 59 60 #ifdef __GNUC__ 61 __inline 62 #else 63 #ifdef __cplusplus 64 inline 65 #endif 66 #endif 67 static unsigned int 68 hash (register const char *str, register unsigned int len) 69 { 70 static const unsigned short asso_values[] = 71 { 72 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 73 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 74 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 75 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 76 400, 400, 400, 400, 400, 400, 400, 400, 0, 0, 77 1, 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, 400, 400, 80 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 81 400, 400, 400, 400, 400, 400, 400, 28, 90, 0, 82 95, 0, 51, 93, 114, 26, 109, 124, 5, 1, 83 6, 13, 37, 128, 3, 0, 0, 49, 38, 0, 84 104, 45, 0, 400, 400, 400, 400, 400, 400, 400, 85 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 86 400, 400, 400, 400, 400, 400, 400, 400, 400, 400, 87 400, 400, 400, 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 98 }; 99 register int hval = len; 100 101 switch (hval) 102 { 103 default: 104 hval += asso_values[(unsigned char)str[5]+1]; 105 /*FALLTHROUGH*/ 106 case 5: 107 hval += asso_values[(unsigned char)str[4]]; 108 /*FALLTHROUGH*/ 109 case 4: 110 hval += asso_values[(unsigned char)str[3]]; 111 /*FALLTHROUGH*/ 112 case 3: 113 hval += asso_values[(unsigned char)str[2]]; 114 /*FALLTHROUGH*/ 115 case 2: 116 hval += asso_values[(unsigned char)str[1]]; 117 /*FALLTHROUGH*/ 118 case 1: 119 hval += asso_values[(unsigned char)str[0]]; 120 break; 121 } 122 return hval + asso_values[(unsigned char)str[len - 1]]; 123 } 124 125 #ifdef __GNUC__ 126 __inline 127 #ifdef __GNUC_STDC_INLINE__ 128 __attribute__ ((__gnu_inline__)) 129 #endif 130 #endif 131 const char * 132 libc_name_p (register const char *str, register unsigned int len) 133 { 134 enum 135 { 136 TOTAL_KEYWORDS = 156, 137 MIN_WORD_LENGTH = 3, 138 MAX_WORD_LENGTH = 10, 139 MIN_HASH_VALUE = 9, 140 MAX_HASH_VALUE = 399 141 }; 142 143 static const char * const wordlist[] = 144 { 145 "wcsstr", 146 "strstr", 147 "cos", 148 "towctrans", 149 "memmove", 150 "wcstol", 151 "wcscoll", 152 "wcstombs", 153 "strtol", 154 "strcoll", 155 "wcslen", 156 "time", 157 "ctime", 158 "strlen", 159 "iswctype", 160 "wmemchr", 161 "wcsrchr", 162 "ceil", 163 "sin", 164 "strrchr", 165 "tan", 166 "iscntrl", 167 "acos", 168 "wmemmove", 169 "wcsrtombs", 170 "wctrans", 171 "wmemcmp", 172 "pow", 173 "atol", 174 "wcsncmp", 175 "memset", 176 "free", 177 "strncmp", 178 "wmemset", 179 "wcsspn", 180 "wcstoul", 181 "strspn", 182 "strtoul", 183 "asctime", 184 "atan2", 185 "asin", 186 "atan", 187 "ferror", 188 "iswalnum", 189 "wcscat", 190 "realloc", 191 "strcat", 192 "wcscpy", 193 "memcpy", 194 "strcpy", 195 "tolower", 196 "floor", 197 "iswcntrl", 198 "atoi", 199 "clearerr", 200 "swscanf", 201 "wcsncat", 202 "islower", 203 "strncat", 204 "btowc", 205 "localtime", 206 "wctomb", 207 "isalnum", 208 "isprint", 209 "mblen", 210 "wcstod", 211 "log10", 212 "strtod", 213 "wcrtomb", 214 "abs", 215 "setlocale", 216 "wcschr", 217 "mbrlen", 218 "memchr", 219 "strchr", 220 "labs", 221 "iswpunct", 222 "exit", 223 "sqrt", 224 "swprintf", 225 "wctype", 226 "mbsrtowcs", 227 "wcscspn", 228 "getenv", 229 "strcspn", 230 "towlower", 231 "atof", 232 "wcstok", 233 "localeconv", 234 "strtok", 235 "calloc", 236 "malloc", 237 "isalpha", 238 "iswlower", 239 "iswspace", 240 "wcsxfrm", 241 "signal", 242 "strxfrm", 243 "wcsftime", 244 "feof", 245 "strftime", 246 "wcscmp", 247 "fabs", 248 "memcmp", 249 "strcmp", 250 "vsprintf", 251 "fwide", 252 "gmtime", 253 "sprintf", 254 "exp", 255 "wmemcpy", 256 "iswprint", 257 "sscanf", 258 "wcsncpy", 259 "strncpy", 260 "isspace", 261 "toupper", 262 "wctob", 263 "div", 264 "mbtowc", 265 "ldiv", 266 "log", 267 "mktime", 268 "isupper", 269 "atexit", 270 "modf", 271 "mbstowcs", 272 "mbrtowc", 273 "ispunct", 274 "iswalpha", 275 "setvbuf", 276 "rand", 277 "srand", 278 "frexp", 279 "towupper", 280 "mbsinit", 281 "cosh", 282 "vswprintf", 283 "iswupper", 284 "wcspbrk", 285 "fmod", 286 "strpbrk", 287 "sinh", 288 "tanh", 289 "iswdigit", 290 "clock", 291 "longjmp", 292 "ldexp", 293 "setbuf", 294 "fseek", 295 "iswgraph", 296 "difftime", 297 "iswxdigit", 298 "isdigit", 299 "isxdigit", 300 "isgraph" 301 }; 302 303 static const short lookup[] = 304 { 305 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 306 -1, -1, 1, -1, -1, -1, 2, -1, -1, -1, 307 -1, -1, 3, 4, -1, 5, 6, 7, 8, 9, 308 10, 11, 12, 13, 14, -1, -1, -1, 15, 16, 309 17, 18, 19, 20, 21, 22, -1, -1, 23, 24, 310 -1, 25, 26, 27, -1, 28, 29, 30, 31, 32, 311 33, -1, 34, 35, -1, 36, 37, 38, -1, 39, 312 40, -1, 41, -1, -1, -1, -1, -1, -1, 42, 313 -1, 43, -1, 44, -1, 45, 46, -1, 47, -1, 314 48, 49, 50, 51, 52, -1, -1, 53, 54, 55, 315 -1, -1, -1, 56, -1, 57, 58, -1, 59, 60, 316 61, 62, 63, 64, 65, -1, 66, 67, -1, 68, 317 -1, 69, 70, 71, 72, 73, 74, 75, -1, -1, 318 -1, -1, -1, 76, 77, 78, -1, -1, 79, 80, 319 81, 82, -1, 83, 84, -1, 85, 86, 87, -1, 320 88, 89, 90, 91, -1, -1, -1, 92, -1, 93, 321 -1, 94, -1, 95, -1, 96, 97, -1, 98, -1, 322 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 323 -1, 109, 110, 111, 112, -1, 113, -1, -1, 114, 324 -1, -1, -1, 115, -1, -1, -1, 116, 117, -1, 325 118, -1, -1, -1, -1, 119, 120, 121, -1, 122, 326 123, -1, -1, 124, -1, 125, 126, -1, 127, -1, 327 128, -1, -1, 129, 130, -1, -1, -1, -1, -1, 328 -1, 131, 132, -1, -1, -1, -1, 133, 134, 135, 329 -1, -1, -1, -1, -1, 136, -1, 137, -1, -1, 330 -1, 138, -1, -1, -1, -1, -1, -1, 139, 140, 331 -1, 141, -1, -1, 142, -1, 143, -1, -1, 144, 332 -1, 145, -1, -1, -1, -1, 146, -1, -1, -1, 333 -1, -1, -1, 147, -1, -1, -1, -1, -1, 148, 334 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 335 -1, -1, -1, -1, 149, -1, -1, -1, -1, -1, 336 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 337 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 338 -1, -1, -1, -1, 150, -1, -1, -1, -1, -1, 339 151, -1, -1, 152, -1, -1, -1, -1, -1, -1, 340 -1, -1, -1, -1, -1, -1, 153, -1, -1, -1, 341 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 342 -1, -1, -1, 154, -1, -1, -1, -1, -1, -1, 343 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 344 -1, -1, -1, -1, -1, -1, -1, -1, -1, 155 345 }; 346 347 if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) 348 { 349 register int key = hash (str, len); 350 351 if (key <= MAX_HASH_VALUE && key >= 0) 352 { 353 register int index = lookup[key]; 354 355 if (index >= 0) 356 { 357 register const char *s = wordlist[index]; 358 359 if (*str == *s && !strcmp (str + 1, s + 1)) 360 return s; 361 } 362 } 363 } 364 return 0; 365 } 366