436424f03ecd034ae2f0ed956a4bed8b5fcbd738
[platform/upstream/gcc.git] / gcc / cp / hash.h
1 /* C code produced by gperf version 2.5 (GNU C++ version) */
2 /* Command-line: gperf -p -j1 -g -o -t -N is_reserved_word -k1,4,7,$ ../../../devo/gcc/cp/gxx.gperf  */
3 /* Command-line: gperf -p -j1 -g -o -t -N is_reserved_word -k1,4,$,7 gplus.gperf  */
4 struct resword { char *name; short token; enum rid rid;};
5
6 #define TOTAL_KEYWORDS 98
7 #define MIN_WORD_LENGTH 2
8 #define MAX_WORD_LENGTH 16
9 #define MIN_HASH_VALUE 4
10 #define MAX_HASH_VALUE 258
11 /* maximum key range = 255, duplicates = 0 */
12
13 #ifdef __GNUC__
14 inline
15 #endif
16 static unsigned int
17 hash (str, len)
18      register char *str;
19      register int unsigned len;
20 {
21   static unsigned short asso_values[] =
22     {
23      259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
24      259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
25      259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
26      259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
27      259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
28      259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
29      259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
30      259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
31      259, 259, 259, 259, 259, 259, 259, 259, 259, 259,
32      259, 259, 259, 259, 259,   0, 259,  27,  17,  20,
33       40,   0,  64,   6,  10,  89, 259,   2, 110,  44,
34       13, 107,  40,  10,  18,  55,   1,   3,   5,  17,
35        2,   4, 259, 259, 259, 259, 259, 259,
36     };
37   register int hval = len;
38
39   switch (hval)
40     {
41       default:
42       case 7:
43         hval += asso_values[str[6]];
44       case 6:
45       case 5:
46       case 4:
47         hval += asso_values[str[3]];
48       case 3:
49       case 2:
50       case 1:
51         hval += asso_values[str[0]];
52         break;
53     }
54   return hval + asso_values[str[len - 1]];
55 }
56
57 #ifdef __GNUC__
58 inline
59 #endif
60 struct resword *
61 is_reserved_word (str, len)
62      register char *str;
63      register unsigned int len;
64 {
65   static struct resword wordlist[] =
66     {
67       {"",}, {"",}, {"",}, {"",}, 
68       {"else",  ELSE, NORID,},
69       {"true",  CXX_TRUE, NORID,},
70       {"",}, {"",}, 
71       {"try",  TRY, NORID,},
72       {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
73       {"not",  '!', NORID,},
74       {"xor_eq",  ASSIGN, NORID,},
75       {"extern",  SCSPEC, RID_EXTERN,},
76       {"",}, {"",}, {"",}, 
77       {"xor",  '^', NORID,},
78       {"case",  CASE, NORID,},
79       {"",}, {"",}, 
80       {"using",  USING, NORID,},
81       {"__extension__",  EXTENSION, NORID},
82       {"not_eq",  EQCOMPARE, NORID,},
83       {"",}, {"",}, 
84       {"continue",  CONTINUE, NORID,},
85       {"new",  NEW, NORID,},
86       {"__inline",  SCSPEC, RID_INLINE},
87       {"",}, 
88       {"__inline__",  SCSPEC, RID_INLINE},
89       {"",}, {"",}, {"",}, 
90       {"return",  RETURN, NORID,},
91       {"",}, {"",}, 
92       {"and_eq",  ASSIGN, NORID,},
93       {"",}, {"",}, 
94       {"delete",  DELETE, NORID,},
95       {"typeid",  TYPEID, NORID,},
96       {"__wchar_t",  TYPESPEC, RID_WCHAR  /* Unique to ANSI C++ */,},
97       {"namespace",  NAMESPACE, NORID,},
98       {"template",  TEMPLATE, RID_TEMPLATE,},
99       {"break",  BREAK, NORID,},
100       {"private",  VISSPEC, RID_PRIVATE,},
101       {"typename",  TYPENAME_KEYWORD, NORID,},
102       {"",}, 
103       {"catch",  CATCH, NORID,},
104       {"",}, {"",}, {"",}, {"",}, 
105       {"char",  TYPESPEC, RID_CHAR,},
106       {"",}, 
107       {"__asm__",  GCC_ASM_KEYWORD, NORID},
108       {"double",  TYPESPEC, RID_DOUBLE,},
109       {"",}, 
110       {"struct",  AGGR, RID_RECORD,},
111       {"reinterpret_cast",  REINTERPRET_CAST, NORID,},
112       {"",}, 
113       {"static_cast",  STATIC_CAST, NORID,},
114       {"",}, 
115       {"and",  ANDAND, NORID,},
116       {"typeof",  TYPEOF, NORID,},
117       {"switch",  SWITCH, NORID,},
118       {"",}, 
119       {"asm",  ASM_KEYWORD, NORID,},
120       {"",}, 
121       {"default",  DEFAULT, NORID,},
122       {"",}, 
123       {"mutable",  SCSPEC, RID_MUTABLE,},
124       {"short",  TYPESPEC, RID_SHORT,},
125       {"signature",  AGGR, RID_SIGNATURE        /* Extension */,},
126       {"const",  CV_QUALIFIER, RID_CONST,},
127       {"static",  SCSPEC, RID_STATIC,},
128       {"",}, {"",}, 
129       {"for",  FOR, NORID,},
130       {"",}, {"",}, {"",}, 
131       {"void",  TYPESPEC, RID_VOID,},
132       {"bitand",  '&', NORID,},
133       {"protected",  VISSPEC, RID_PROTECTED,},
134       {"enum",  ENUM, NORID,},
135       {"int",  TYPESPEC, RID_INT,},
136       {"",}, {"",}, {"",}, 
137       {"float",  TYPESPEC, RID_FLOAT,},
138       {"",}, 
139       {"__signed__",  TYPESPEC, RID_SIGNED},
140       {"dynamic_cast",  DYNAMIC_CAST, NORID,},
141       {"__attribute",  ATTRIBUTE, NORID},
142       {"",}, 
143       {"__attribute__",  ATTRIBUTE, NORID},
144       {"__asm",  GCC_ASM_KEYWORD, NORID},
145       {"",}, 
146       {"const_cast",  CONST_CAST, NORID,},
147       {"",}, {"",}, {"",}, 
148       {"friend",  SCSPEC, RID_FRIEND,},
149       {"",}, {"",}, {"",}, 
150       {"signed",  TYPESPEC, RID_SIGNED,},
151       {"this",  THIS, NORID,},
152       {"__const",  CV_QUALIFIER, RID_CONST},
153       {"__const__",  CV_QUALIFIER, RID_CONST},
154       {"__volatile",  CV_QUALIFIER, RID_VOLATILE},
155       {"__null",  CONSTANT, RID_NULL},
156       {"__volatile__",  CV_QUALIFIER, RID_VOLATILE},
157       {"__typeof__",  TYPEOF, NORID},
158       {"or_eq",  ASSIGN, NORID,},
159       {"",}, 
160       {"false",  CXX_FALSE, NORID,},
161       {"sizeof",  SIZEOF, NORID,},
162       {"long",  TYPESPEC, RID_LONG,},
163       {"or",  OROR, NORID,},
164       {"union",  AGGR, RID_UNION,},
165       {"__signature__",  AGGR, RID_SIGNATURE    /* Extension */,},
166       {"throw",  THROW, NORID,},
167       {"",}, 
168       {"while",  WHILE, NORID,},
169       {"register",  SCSPEC, RID_REGISTER,},
170       {"__alignof__",  ALIGNOF, NORID},
171       {"class",  AGGR, RID_CLASS,},
172       {"typedef",  SCSPEC, RID_TYPEDEF,},
173       {"__signed",  TYPESPEC, RID_SIGNED},
174       {"",}, {"",}, 
175       {"unsigned",  TYPESPEC, RID_UNSIGNED,},
176       {"",}, {"",}, {"",}, {"",}, {"",}, 
177       {"__label__",  LABEL, NORID},
178       {"bitor",  '|', NORID,},
179       {"",}, 
180       {"do",  DO, NORID,},
181       {"volatile",  CV_QUALIFIER, RID_VOLATILE,},
182       {"",}, {"",}, {"",}, {"",}, 
183       {"if",  IF, NORID,},
184       {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
185       {"__sigof__",  SIGOF, NORID               /* Extension */,},
186       {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
187       {"",}, {"",}, {"",}, 
188       {"compl",  '~', NORID,},
189       {"public",  VISSPEC, RID_PUBLIC,},
190       {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
191       {"__typeof",  TYPEOF, NORID},
192       {"inline",  SCSPEC, RID_INLINE,},
193       {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
194       {"",}, {"",}, 
195       {"__alignof",  ALIGNOF, NORID},
196       {"",}, {"",}, {"",}, 
197       {"overload",  OVERLOAD, NORID,},
198       {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
199       {"explicit",  SCSPEC, RID_EXPLICIT,},
200       {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
201       {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
202       {"goto",  GOTO, NORID,},
203       {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
204       {"sigof",  SIGOF, NORID           /* Extension */,},
205       {"",}, 
206       {"virtual",  SCSPEC, RID_VIRTUAL,},
207       {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
208       {"bool",  TYPESPEC, RID_BOOL,},
209       {"",}, {"",}, {"",}, 
210       {"auto",  SCSPEC, RID_AUTO,},
211       {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, {"",}, 
212       {"",}, {"",}, {"",}, 
213       {"operator",  OPERATOR, NORID,},
214     };
215
216   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
217     {
218       register int key = hash (str, len);
219
220       if (key <= MAX_HASH_VALUE && key >= 0)
221         {
222           register char *s = wordlist[key].name;
223
224           if (*s == *str && !strcmp (str + 1, s + 1))
225             return &wordlist[key];
226         }
227     }
228   return 0;
229 }