kconfig/zconf.hash.c
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Aug 21 23:11:26 2011 +0200 (2011-08-21)
changeset 2623 e8e30025fcc5
parent 943 1cca90ce0481
permissions -rw-r--r--
configure: recognise and handle --program-transform-name

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
     1 /* ANSI-C code produced by gperf version 3.0.3 */
     2 /* Command-line: gperf  */
     3 /* Computed positions: -k'1,3' */
     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 struct kconf_id;
    33 
    34 static struct kconf_id *kconf_id_lookup(register const char *str, register unsigned int len);
    35 /* maximum key range = 50, duplicates = 0 */
    36 
    37 #ifdef __GNUC__
    38 __inline
    39 #else
    40 #ifdef __cplusplus
    41 inline
    42 #endif
    43 #endif
    44 static unsigned int
    45 kconf_id_hash (register const char *str, register unsigned int len)
    46 {
    47   static unsigned char asso_values[] =
    48     {
    49       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    50       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    51       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    52       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    53       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    54       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    55       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    56       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    57       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    58       52, 52, 52, 52, 52, 52, 52, 52, 40,  5,
    59        0,  0,  5, 52,  0, 20, 52, 52, 10, 20,
    60        5,  0, 35, 52,  0, 30,  0, 15,  0, 52,
    61       15, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    62       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    63       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    64       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    65       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    66       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    67       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    68       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    69       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    70       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    71       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    72       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    73       52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
    74       52, 52, 52, 52, 52, 52
    75     };
    76   register int hval = len;
    77 
    78   switch (hval)
    79     {
    80       default:
    81         hval += asso_values[(unsigned char)str[2]];
    82       /*FALLTHROUGH*/
    83       case 2:
    84       case 1:
    85         hval += asso_values[(unsigned char)str[0]];
    86         break;
    87     }
    88   return hval;
    89 }
    90 
    91 struct kconf_id_strings_t
    92   {
    93     char kconf_id_strings_str2[sizeof("on")];
    94     char kconf_id_strings_str3[sizeof("env")];
    95     char kconf_id_strings_str5[sizeof("endif")];
    96     char kconf_id_strings_str6[sizeof("option")];
    97     char kconf_id_strings_str7[sizeof("endmenu")];
    98     char kconf_id_strings_str8[sizeof("optional")];
    99     char kconf_id_strings_str9[sizeof("endchoice")];
   100     char kconf_id_strings_str10[sizeof("range")];
   101     char kconf_id_strings_str11[sizeof("choice")];
   102     char kconf_id_strings_str12[sizeof("default")];
   103     char kconf_id_strings_str13[sizeof("def_bool")];
   104     char kconf_id_strings_str14[sizeof("help")];
   105     char kconf_id_strings_str16[sizeof("config")];
   106     char kconf_id_strings_str17[sizeof("def_tristate")];
   107     char kconf_id_strings_str18[sizeof("hex")];
   108     char kconf_id_strings_str19[sizeof("defconfig_list")];
   109     char kconf_id_strings_str22[sizeof("if")];
   110     char kconf_id_strings_str23[sizeof("int")];
   111     char kconf_id_strings_str27[sizeof("modules")];
   112     char kconf_id_strings_str28[sizeof("tristate")];
   113     char kconf_id_strings_str29[sizeof("menu")];
   114     char kconf_id_strings_str32[sizeof("comment")];
   115     char kconf_id_strings_str35[sizeof("menuconfig")];
   116     char kconf_id_strings_str36[sizeof("string")];
   117     char kconf_id_strings_str37[sizeof("visible")];
   118     char kconf_id_strings_str41[sizeof("prompt")];
   119     char kconf_id_strings_str42[sizeof("depends")];
   120     char kconf_id_strings_str44[sizeof("bool")];
   121     char kconf_id_strings_str46[sizeof("select")];
   122     char kconf_id_strings_str47[sizeof("boolean")];
   123     char kconf_id_strings_str48[sizeof("mainmenu")];
   124     char kconf_id_strings_str51[sizeof("source")];
   125   };
   126 static struct kconf_id_strings_t kconf_id_strings_contents =
   127   {
   128     "on",
   129     "env",
   130     "endif",
   131     "option",
   132     "endmenu",
   133     "optional",
   134     "endchoice",
   135     "range",
   136     "choice",
   137     "default",
   138     "def_bool",
   139     "help",
   140     "config",
   141     "def_tristate",
   142     "hex",
   143     "defconfig_list",
   144     "if",
   145     "int",
   146     "modules",
   147     "tristate",
   148     "menu",
   149     "comment",
   150     "menuconfig",
   151     "string",
   152     "visible",
   153     "prompt",
   154     "depends",
   155     "bool",
   156     "select",
   157     "boolean",
   158     "mainmenu",
   159     "source"
   160   };
   161 #define kconf_id_strings ((const char *) &kconf_id_strings_contents)
   162 #ifdef __GNUC__
   163 __inline
   164 #ifdef __GNUC_STDC_INLINE__
   165 __attribute__ ((__gnu_inline__))
   166 #endif
   167 #endif
   168 struct kconf_id *
   169 kconf_id_lookup (register const char *str, register unsigned int len)
   170 {
   171   enum
   172     {
   173       TOTAL_KEYWORDS = 32,
   174       MIN_WORD_LENGTH = 2,
   175       MAX_WORD_LENGTH = 14,
   176       MIN_HASH_VALUE = 2,
   177       MAX_HASH_VALUE = 51
   178     };
   179 
   180   static struct kconf_id wordlist[] =
   181     {
   182       {-1}, {-1},
   183       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2,		T_ON,		TF_PARAM},
   184       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str3,		T_OPT_ENV,	TF_OPTION},
   185       {-1},
   186       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5,		T_ENDIF,	TF_COMMAND},
   187       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str6,		T_OPTION,	TF_COMMAND},
   188       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7,	T_ENDMENU,	TF_COMMAND},
   189       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str8,	T_OPTIONAL,	TF_COMMAND},
   190       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str9,	T_ENDCHOICE,	TF_COMMAND},
   191       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str10,		T_RANGE,	TF_COMMAND},
   192       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str11,		T_CHOICE,	TF_COMMAND},
   193       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12,	T_DEFAULT,	TF_COMMAND, S_UNKNOWN},
   194       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13,	T_DEFAULT,	TF_COMMAND, S_BOOLEAN},
   195       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14,		T_HELP,		TF_COMMAND},
   196       {-1},
   197       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str16,		T_CONFIG,	TF_COMMAND},
   198       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17,	T_DEFAULT,	TF_COMMAND, S_TRISTATE},
   199       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18,		T_TYPE,		TF_COMMAND, S_HEX},
   200       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str19,	T_OPT_DEFCONFIG_LIST,TF_OPTION},
   201       {-1}, {-1},
   202       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22,		T_IF,		TF_COMMAND|TF_PARAM},
   203       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23,		T_TYPE,		TF_COMMAND, S_INT},
   204       {-1}, {-1}, {-1},
   205       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27,	T_OPT_MODULES,	TF_OPTION},
   206       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28,	T_TYPE,		TF_COMMAND, S_TRISTATE},
   207       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29,		T_MENU,		TF_COMMAND},
   208       {-1}, {-1},
   209       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32,	T_COMMENT,	TF_COMMAND},
   210       {-1}, {-1},
   211       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35,	T_MENUCONFIG,	TF_COMMAND},
   212       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36,		T_TYPE,		TF_COMMAND, S_STRING},
   213       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str37,	T_VISIBLE,	TF_COMMAND},
   214       {-1}, {-1}, {-1},
   215       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str41,		T_PROMPT,	TF_COMMAND},
   216       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str42,	T_DEPENDS,	TF_COMMAND},
   217       {-1},
   218       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str44,		T_TYPE,		TF_COMMAND, S_BOOLEAN},
   219       {-1},
   220       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str46,		T_SELECT,	TF_COMMAND},
   221       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str47,	T_TYPE,		TF_COMMAND, S_BOOLEAN},
   222       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str48,	T_MAINMENU,	TF_COMMAND},
   223       {-1}, {-1},
   224       {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str51,		T_SOURCE,	TF_COMMAND}
   225     };
   226 
   227   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
   228     {
   229       register int key = kconf_id_hash (str, len);
   230 
   231       if (key <= MAX_HASH_VALUE && key >= 0)
   232         {
   233           register int o = wordlist[key].name;
   234           if (o >= 0)
   235             {
   236               register const char *s = o + kconf_id_strings;
   237 
   238               if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
   239                 return &wordlist[key];
   240             }
   241         }
   242     }
   243   return 0;
   244 }
   245