cfns.h   [plain text]


/* ANSI-C code produced by gperf version 3.0.1 */
/* Command-line: gperf -o -C -E -k '1-6,$' -j1 -D -N libc_name_p -L ANSI-C ../../gcc/gcc/cp/cfns.gperf  */

#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
/* The character set is not based on ISO-646.  */
#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
#endif

#line 1 "../../gcc/gcc/cp/cfns.gperf"

#ifdef __GNUC__
__inline
#endif
static unsigned int hash (const char *, unsigned int);
#ifdef __GNUC__
__inline
#endif
const char * libc_name_p (const char *, unsigned int);
/* maximum key range = 391, duplicates = 0 */

#ifdef __GNUC__
__inline
#else
#ifdef __cplusplus
inline
#endif
#endif
static unsigned int
hash (register const char *str, register unsigned int len)
{
  static const unsigned short asso_values[] =
    {
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400,   0,   0,
        1, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400,  28,  90,   0,
       95,   0,  51,  93, 114,  26, 109, 124,   5,   1,
        6,  13,  37, 128,   3,   0,   0,  49,  38,   0,
      104,  45,   0, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400, 400, 400, 400,
      400, 400, 400, 400, 400, 400, 400
    };
  register int hval = len;

  switch (hval)
    {
      default:
        hval += asso_values[(unsigned char)str[5]+1];
      /*FALLTHROUGH*/
      case 5:
        hval += asso_values[(unsigned char)str[4]];
      /*FALLTHROUGH*/
      case 4:
        hval += asso_values[(unsigned char)str[3]];
      /*FALLTHROUGH*/
      case 3:
        hval += asso_values[(unsigned char)str[2]];
      /*FALLTHROUGH*/
      case 2:
        hval += asso_values[(unsigned char)str[1]];
      /*FALLTHROUGH*/
      case 1:
        hval += asso_values[(unsigned char)str[0]];
        break;
    }
  return hval + asso_values[(unsigned char)str[len - 1]];
}

#ifdef __GNUC__
__inline
#endif
const char *
libc_name_p (register const char *str, register unsigned int len)
{
  enum
    {
      TOTAL_KEYWORDS = 156,
      MIN_WORD_LENGTH = 3,
      MAX_WORD_LENGTH = 10,
      MIN_HASH_VALUE = 9,
      MAX_HASH_VALUE = 399
    };

  static const char * const wordlist[] =
    {
      "wcsstr",
      "strstr",
      "cos",
      "towctrans",
      "memmove",
      "wcstol",
      "wcscoll",
      "wcstombs",
      "strtol",
      "strcoll",
      "wcslen",
      "time",
      "ctime",
      "strlen",
      "iswctype",
      "wmemchr",
      "wcsrchr",
      "ceil",
      "sin",
      "strrchr",
      "tan",
      "iscntrl",
      "acos",
      "wmemmove",
      "wcsrtombs",
      "wctrans",
      "wmemcmp",
      "pow",
      "atol",
      "wcsncmp",
      "memset",
      "free",
      "strncmp",
      "wmemset",
      "wcsspn",
      "wcstoul",
      "strspn",
      "strtoul",
      "asctime",
      "atan2",
      "asin",
      "atan",
      "ferror",
      "iswalnum",
      "wcscat",
      "realloc",
      "strcat",
      "wcscpy",
      "memcpy",
      "strcpy",
      "tolower",
      "floor",
      "iswcntrl",
      "atoi",
      "clearerr",
      "swscanf",
      "wcsncat",
      "islower",
      "strncat",
      "btowc",
      "localtime",
      "wctomb",
      "isalnum",
      "isprint",
      "mblen",
      "wcstod",
      "log10",
      "strtod",
      "wcrtomb",
      "abs",
      "setlocale",
      "wcschr",
      "mbrlen",
      "memchr",
      "strchr",
      "labs",
      "iswpunct",
      "exit",
      "sqrt",
      "swprintf",
      "wctype",
      "mbsrtowcs",
      "wcscspn",
      "getenv",
      "strcspn",
      "towlower",
      "atof",
      "wcstok",
      "localeconv",
      "strtok",
      "calloc",
      "malloc",
      "isalpha",
      "iswlower",
      "iswspace",
      "wcsxfrm",
      "signal",
      "strxfrm",
      "wcsftime",
      "feof",
      "strftime",
      "wcscmp",
      "fabs",
      "memcmp",
      "strcmp",
      "vsprintf",
      "fwide",
      "gmtime",
      "sprintf",
      "exp",
      "wmemcpy",
      "iswprint",
      "sscanf",
      "wcsncpy",
      "strncpy",
      "isspace",
      "toupper",
      "wctob",
      "div",
      "mbtowc",
      "ldiv",
      "log",
      "mktime",
      "isupper",
      "atexit",
      "modf",
      "mbstowcs",
      "mbrtowc",
      "ispunct",
      "iswalpha",
      "setvbuf",
      "rand",
      "srand",
      "frexp",
      "towupper",
      "mbsinit",
      "cosh",
      "vswprintf",
      "iswupper",
      "wcspbrk",
      "fmod",
      "strpbrk",
      "sinh",
      "tanh",
      "iswdigit",
      "clock",
      "longjmp",
      "ldexp",
      "setbuf",
      "fseek",
      "iswgraph",
      "difftime",
      "iswxdigit",
      "isdigit",
      "isxdigit",
      "isgraph"
    };

  static const short lookup[] =
    {
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   0,
       -1,  -1,   1,  -1,  -1,  -1,   2,  -1,  -1,  -1,
       -1,  -1,   3,   4,  -1,   5,   6,   7,   8,   9,
       10,  11,  12,  13,  14,  -1,  -1,  -1,  15,  16,
       17,  18,  19,  20,  21,  22,  -1,  -1,  23,  24,
       -1,  25,  26,  27,  -1,  28,  29,  30,  31,  32,
       33,  -1,  34,  35,  -1,  36,  37,  38,  -1,  39,
       40,  -1,  41,  -1,  -1,  -1,  -1,  -1,  -1,  42,
       -1,  43,  -1,  44,  -1,  45,  46,  -1,  47,  -1,
       48,  49,  50,  51,  52,  -1,  -1,  53,  54,  55,
       -1,  -1,  -1,  56,  -1,  57,  58,  -1,  59,  60,
       61,  62,  63,  64,  65,  -1,  66,  67,  -1,  68,
       -1,  69,  70,  71,  72,  73,  74,  75,  -1,  -1,
       -1,  -1,  -1,  76,  77,  78,  -1,  -1,  79,  80,
       81,  82,  -1,  83,  84,  -1,  85,  86,  87,  -1,
       88,  89,  90,  91,  -1,  -1,  -1,  92,  -1,  93,
       -1,  94,  -1,  95,  -1,  96,  97,  -1,  98,  -1,
       99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
       -1, 109, 110, 111, 112,  -1, 113,  -1,  -1, 114,
       -1,  -1,  -1, 115,  -1,  -1,  -1, 116, 117,  -1,
      118,  -1,  -1,  -1,  -1, 119, 120, 121,  -1, 122,
      123,  -1,  -1, 124,  -1, 125, 126,  -1, 127,  -1,
      128,  -1,  -1, 129, 130,  -1,  -1,  -1,  -1,  -1,
       -1, 131, 132,  -1,  -1,  -1,  -1, 133, 134, 135,
       -1,  -1,  -1,  -1,  -1, 136,  -1, 137,  -1,  -1,
       -1, 138,  -1,  -1,  -1,  -1,  -1,  -1, 139, 140,
       -1, 141,  -1,  -1, 142,  -1, 143,  -1,  -1, 144,
       -1, 145,  -1,  -1,  -1,  -1, 146,  -1,  -1,  -1,
       -1,  -1,  -1, 147,  -1,  -1,  -1,  -1,  -1, 148,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1, 149,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1, 150,  -1,  -1,  -1,  -1,  -1,
      151,  -1,  -1, 152,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1, 153,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1, 154,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 155
    };

  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
    {
      register int key = hash (str, len);

      if (key <= MAX_HASH_VALUE && key >= 0)
        {
          register int index = lookup[key];

          if (index >= 0)
            {
              register const char *s = wordlist[index];

              if (*str == *s && !strcmp (str + 1, s + 1))
                return s;
            }
        }
    }
  return 0;
}