blob: eabaf7401cd686daee5ac4be33598a3c7e64c60b [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/* ANSI-C code produced by gperf version 2.7.2 */
2/* Command-line: gperf -L ANSI-C -a -C -E -g -H is_reserved_hash -k '1,3,$' -N is_reserved_word -p -t scripts/genksyms/keywords.gperf */
3struct resword { const char *name; int token; };
4/* maximum key range = 109, duplicates = 0 */
5
6#ifdef __GNUC__
7__inline
8#else
9#ifdef __cplusplus
10inline
11#endif
12#endif
13static unsigned int
14is_reserved_hash (register const char *str, register unsigned int len)
15{
16 static const unsigned char asso_values[] =
17 {
18 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
19 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
20 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
21 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
22 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
23 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
24 113, 113, 113, 113, 113, 113, 113, 113, 113, 5,
25 113, 113, 113, 113, 113, 113, 0, 113, 113, 113,
26 0, 113, 113, 113, 113, 113, 113, 113, 113, 113,
27 113, 113, 113, 113, 113, 0, 113, 0, 113, 20,
28 25, 0, 35, 30, 113, 20, 113, 113, 40, 30,
29 30, 0, 0, 113, 0, 51, 0, 15, 5, 113,
30 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
31 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
32 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
33 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
34 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
35 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
36 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
37 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
38 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
39 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
40 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
41 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
42 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
43 113, 113, 113, 113, 113, 113
44 };
45 return len + asso_values[(unsigned char)str[2]] + asso_values[(unsigned char)str[0]] + asso_values[(unsigned char)str[len - 1]];
46}
47
48#ifdef __GNUC__
49__inline
50#endif
51const struct resword *
52is_reserved_word (register const char *str, register unsigned int len)
53{
54 enum
55 {
56 TOTAL_KEYWORDS = 41,
57 MIN_WORD_LENGTH = 3,
58 MAX_WORD_LENGTH = 17,
59 MIN_HASH_VALUE = 4,
60 MAX_HASH_VALUE = 112
61 };
62
63 static const struct resword wordlist[] =
64 {
65 {""}, {""}, {""}, {""},
66 {"auto", AUTO_KEYW},
67 {""}, {""},
68 {"__asm__", ASM_KEYW},
69 {""},
70 {"_restrict", RESTRICT_KEYW},
71 {"__typeof__", TYPEOF_KEYW},
72 {"__attribute", ATTRIBUTE_KEYW},
73 {"__restrict__", RESTRICT_KEYW},
74 {"__attribute__", ATTRIBUTE_KEYW},
75 {""},
76 {"__volatile", VOLATILE_KEYW},
77 {""},
78 {"__volatile__", VOLATILE_KEYW},
79 {"EXPORT_SYMBOL", EXPORT_SYMBOL_KEYW},
80 {""}, {""}, {""},
81 {"EXPORT_SYMBOL_GPL", EXPORT_SYMBOL_KEYW},
82 {"int", INT_KEYW},
83 {"char", CHAR_KEYW},
84 {""}, {""},
85 {"__const", CONST_KEYW},
86 {"__inline", INLINE_KEYW},
87 {"__const__", CONST_KEYW},
88 {"__inline__", INLINE_KEYW},
89 {""}, {""}, {""}, {""},
90 {"__asm", ASM_KEYW},
91 {"extern", EXTERN_KEYW},
92 {""},
93 {"register", REGISTER_KEYW},
94 {""},
95 {"float", FLOAT_KEYW},
96 {"typeof", TYPEOF_KEYW},
97 {"typedef", TYPEDEF_KEYW},
98 {""}, {""},
99 {"_Bool", BOOL_KEYW},
100 {"double", DOUBLE_KEYW},
101 {""}, {""},
102 {"enum", ENUM_KEYW},
103 {""}, {""}, {""},
104 {"volatile", VOLATILE_KEYW},
105 {"void", VOID_KEYW},
106 {"const", CONST_KEYW},
107 {"short", SHORT_KEYW},
108 {"struct", STRUCT_KEYW},
109 {""},
110 {"restrict", RESTRICT_KEYW},
111 {""},
112 {"__signed__", SIGNED_KEYW},
113 {""},
114 {"asm", ASM_KEYW},
115 {""}, {""},
116 {"inline", INLINE_KEYW},
117 {""}, {""}, {""},
118 {"union", UNION_KEYW},
119 {""}, {""}, {""}, {""}, {""}, {""},
120 {"static", STATIC_KEYW},
121 {""}, {""}, {""}, {""}, {""}, {""},
122 {"__signed", SIGNED_KEYW},
123 {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
124 {""}, {""}, {""}, {""}, {""},
125 {"unsigned", UNSIGNED_KEYW},
126 {""}, {""}, {""}, {""},
127 {"long", LONG_KEYW},
128 {""}, {""}, {""}, {""}, {""}, {""}, {""},
129 {"signed", SIGNED_KEYW}
130 };
131
132 if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
133 {
134 register int key = is_reserved_hash (str, len);
135
136 if (key <= MAX_HASH_VALUE && key >= 0)
137 {
138 register const char *s = wordlist[key].name;
139
140 if (*str == *s && !strcmp (str + 1, s + 1))
141 return &wordlist[key];
142 }
143 }
144 return 0;
145}