kconfig/zconf.hash.c
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Fri Aug 19 00:52:05 2011 +0200 (2011-08-19)
branch1.12
changeset 2633 22e779b0a4ed
parent 943 1cca90ce0481
permissions -rw-r--r--
scripts: simplify and fix the toolchain config script

The script that is installed, and which sole purpose is to dump
the .config that was used to build the toolchain, is pure insanity.

Let's make it much, much more simpler...

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