Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_34_1/libs/wave/src/token_ids.cpp @ 47

Last change on this file since 47 was 29, checked in by landauf, 17 years ago

updated boost from 1_33_1 to 1_34_1

File size: 11.2 KB
Line 
1/*=============================================================================
2    Boost.Wave: A Standard compliant C++ preprocessor library
3    The definition of a default set of token identifiers and related
4    functions.
5   
6    http://www.boost.org/
7
8    Copyright (c) 2001-2007 Hartmut Kaiser. Distributed under the Boost
9    Software License, Version 1.0. (See accompanying file
10    LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
11=============================================================================*/
12
13#define BOOST_WAVE_SOURCE 1
14#include <string>
15#include <boost/assert.hpp>
16#include <boost/static_assert.hpp>
17
18#include <boost/wave/wave_config.hpp>
19#include <boost/wave/token_ids.hpp>
20
21// this must occur after all of the includes and before any code appears
22#ifdef BOOST_HAS_ABI_HEADERS
23#include BOOST_ABI_PREFIX
24#endif
25
26///////////////////////////////////////////////////////////////////////////////
27namespace boost {
28namespace wave {
29
30///////////////////////////////////////////////////////////////////////////////
31//  return a token name
32BOOST_WAVE_STRINGTYPE
33get_token_name(token_id tokid)
34{
35//  Table of token names
36//
37//      Please note that the sequence of token names must match the sequence of
38//      token id's defined in then enum token_id above.
39static char const *tok_names[] = {
40    /* 256 */   "AND",
41    /* 257 */   "ANDAND",
42    /* 258 */   "ASSIGN",
43    /* 259 */   "ANDASSIGN",
44    /* 260 */   "OR",
45    /* 261 */   "ORASSIGN",
46    /* 262 */   "XOR",
47    /* 263 */   "XORASSIGN",
48    /* 264 */   "COMMA",
49    /* 265 */   "COLON",
50    /* 266 */   "DIVIDE",
51    /* 267 */   "DIVIDEASSIGN",
52    /* 268 */   "DOT",
53    /* 269 */   "DOTSTAR",
54    /* 270 */   "ELLIPSIS",
55    /* 271 */   "EQUAL",
56    /* 272 */   "GREATER",
57    /* 273 */   "GREATEREQUAL",
58    /* 274 */   "LEFTBRACE",
59    /* 275 */   "LESS",
60    /* 276 */   "LESSEQUAL",
61    /* 277 */   "LEFTPAREN",
62    /* 278 */   "LEFTBRACKET",
63    /* 279 */   "MINUS",
64    /* 280 */   "MINUSASSIGN",
65    /* 281 */   "MINUSMINUS",
66    /* 282 */   "PERCENT",
67    /* 283 */   "PERCENTASSIGN",
68    /* 284 */   "NOT",
69    /* 285 */   "NOTEQUAL",
70    /* 286 */   "OROR",
71    /* 287 */   "PLUS",
72    /* 288 */   "PLUSASSIGN",
73    /* 289 */   "PLUSPLUS",
74    /* 290 */   "ARROW",
75    /* 291 */   "ARROWSTAR",
76    /* 292 */   "QUESTION_MARK",
77    /* 293 */   "RIGHTBRACE",
78    /* 294 */   "RIGHTPAREN",
79    /* 295 */   "RIGHTBRACKET",
80    /* 296 */   "COLON_COLON",
81    /* 297 */   "SEMICOLON",
82    /* 298 */   "SHIFTLEFT",
83    /* 299 */   "SHIFTLEFTASSIGN",
84    /* 300 */   "SHIFTRIGHT",
85    /* 301 */   "SHIFTRIGHTASSIGN",
86    /* 302 */   "STAR",
87    /* 303 */   "COMPL",
88    /* 304 */   "STARASSIGN",
89    /* 305 */   "ASM",
90    /* 306 */   "AUTO",
91    /* 307 */   "BOOL",
92    /* 308 */   "FALSE",
93    /* 309 */   "TRUE",
94    /* 310 */   "BREAK",
95    /* 311 */   "CASE",
96    /* 312 */   "CATCH",
97    /* 313 */   "CHAR",
98    /* 314 */   "CLASS",
99    /* 315 */   "CONST",
100    /* 316 */   "CONSTCAST",
101    /* 317 */   "CONTINUE",
102    /* 318 */   "DEFAULT",
103    /* 319 */   "DEFINED",
104    /* 320 */   "DELETE",
105    /* 321 */   "DO",
106    /* 322 */   "DOUBLE",
107    /* 323 */   "DYNAMICCAST",
108    /* 324 */   "ELSE",
109    /* 325 */   "ENUM",
110    /* 326 */   "EXPLICIT",
111    /* 327 */   "EXPORT",
112    /* 328 */   "EXTERN",
113    /* 329 */   "FLOAT",
114    /* 330 */   "FOR",
115    /* 331 */   "FRIEND",
116    /* 332 */   "GOTO",
117    /* 333 */   "IF",
118    /* 334 */   "INLINE",
119    /* 335 */   "INT",
120    /* 336 */   "LONG",
121    /* 337 */   "MUTABLE",
122    /* 338 */   "NAMESPACE",
123    /* 339 */   "NEW",
124    /* 340 */   "OPERATOR",
125    /* 341 */   "PRIVATE",
126    /* 342 */   "PROTECTED",
127    /* 343 */   "PUBLIC",
128    /* 344 */   "REGISTER",
129    /* 345 */   "REINTERPRETCAST",
130    /* 346 */   "RETURN",
131    /* 347 */   "SHORT",
132    /* 348 */   "SIGNED",
133    /* 349 */   "SIZEOF",
134    /* 350 */   "STATIC",
135    /* 351 */   "STATICCAST",
136    /* 352 */   "STRUCT",
137    /* 353 */   "SWITCH",
138    /* 354 */   "TEMPLATE",
139    /* 355 */   "THIS",
140    /* 356 */   "THROW",
141    /* 357 */   "TRY",
142    /* 358 */   "TYPEDEF",
143    /* 359 */   "TYPEID",
144    /* 360 */   "TYPENAME",
145    /* 361 */   "UNION",
146    /* 362 */   "UNSIGNED",
147    /* 363 */   "USING",
148    /* 364 */   "VIRTUAL",
149    /* 365 */   "VOID",
150    /* 366 */   "VOLATILE",
151    /* 367 */   "WCHART",
152    /* 368 */   "WHILE",
153    /* 369 */   "PP_DEFINE",
154    /* 370 */   "PP_IF",
155    /* 371 */   "PP_IFDEF",
156    /* 372 */   "PP_IFNDEF",
157    /* 373 */   "PP_ELSE",
158    /* 374 */   "PP_ELIF",
159    /* 375 */   "PP_ENDIF",
160    /* 376 */   "PP_ERROR",
161    /* 377 */   "PP_LINE",
162    /* 378 */   "PP_PRAGMA",
163    /* 379 */   "PP_UNDEF",
164    /* 380 */   "PP_WARNING",
165    /* 381 */   "IDENTIFIER",
166    /* 382 */   "OCTALINT",
167    /* 383 */   "DECIMALINT",
168    /* 384 */   "HEXAINT",
169    /* 385 */   "INTLIT",
170    /* 386 */   "LONGINTLIT",
171    /* 387 */   "FLOATLIT",
172    /* 388 */   "CCOMMENT",
173    /* 389 */   "CPPCOMMENT",
174    /* 390 */   "CHARLIT",
175    /* 391 */   "STRINGLIT",
176    /* 392 */   "CONTLINE",
177    /* 393 */   "SPACE",
178    /* 394 */   "SPACE2",
179    /* 395 */   "NEWLINE",
180    /* 396 */   "POUND_POUND",
181    /* 397 */   "POUND",
182    /* 398 */   "ANY",
183    /* 399 */   "PP_INCLUDE",
184    /* 400 */   "PP_QHEADER",
185    /* 401 */   "PP_HHEADER",
186    /* 402 */   "EOF",
187    /* 403 */   "EOI",
188    /* 404 */   "PP_NUMBER",
189
190              // MS extensions
191    /* 405 */   "MSEXT_INT8",
192    /* 406 */   "MSEXT_INT16",
193    /* 407 */   "MSEXT_INT32",
194    /* 408 */   "MSEXT_INT64",
195    /* 409 */   "MSEXT_BASED",
196    /* 410 */   "MSEXT_DECLSPEC",
197    /* 411 */   "MSEXT_CDECL",
198    /* 412 */   "MSEXT_FASTCALL",
199    /* 413 */   "MSEXT_STDCALL",
200    /* 414 */   "MSEXT_TRY",
201    /* 415 */   "MSEXT_EXCEPT",
202    /* 416 */   "MSEXT_FINALLY",
203    /* 417 */   "MSEXT_LEAVE",
204    /* 418 */   "MSEXT_INLINE",
205    /* 419 */   "MSEXT_ASM",
206    /* 420 */   "MSEXT_REGION",
207    /* 421 */   "MSEXT_ENDREGION",
208    };
209
210    // make sure, I have not forgotten any commas (as I did more than once)
211    BOOST_STATIC_ASSERT(
212        sizeof(tok_names)/sizeof(tok_names[0]) == T_LAST_TOKEN-T_FIRST_TOKEN
213    );
214   
215    unsigned int id = BASEID_FROM_TOKEN(tokid)-T_FIRST_TOKEN;
216    return (id < T_LAST_TOKEN-T_FIRST_TOKEN) ? tok_names[id] : "<UnknownToken>";
217}
218
219///////////////////////////////////////////////////////////////////////////////
220//  return a token name
221char const *
222get_token_value(token_id tokid)
223{
224//  Table of token values
225//
226//      Please note that the sequence of token names must match the sequence of
227//      token id's defined in then enum token_id above.
228static char const *tok_values[] = {
229    /* 256 */   "&",
230    /* 257 */   "&&",
231    /* 258 */   "=",
232    /* 259 */   "&=",
233    /* 260 */   "|",
234    /* 261 */   "|=",
235    /* 262 */   "^",
236    /* 263 */   "^=",
237    /* 264 */   ",",
238    /* 265 */   ":",
239    /* 266 */   "/",
240    /* 267 */   "/=",
241    /* 268 */   ".",
242    /* 269 */   ".*",
243    /* 270 */   "...",
244    /* 271 */   "==",
245    /* 272 */   ">",
246    /* 273 */   ">=",
247    /* 274 */   "{",
248    /* 275 */   "<",
249    /* 276 */   "<=",
250    /* 277 */   "(",
251    /* 278 */   "[",
252    /* 279 */   "-",
253    /* 280 */   "-=",
254    /* 281 */   "--",
255    /* 282 */   "%",
256    /* 283 */   "%=",
257    /* 284 */   "!",
258    /* 285 */   "!=",
259    /* 286 */   "||",
260    /* 287 */   "+",
261    /* 288 */   "+=",
262    /* 289 */   "++",
263    /* 290 */   "->",
264    /* 291 */   "->*",
265    /* 292 */   "?",
266    /* 293 */   "}",
267    /* 294 */   ")",
268    /* 295 */   "]",
269    /* 296 */   "::",
270    /* 297 */   ";",
271    /* 298 */   "<<",
272    /* 299 */   "<<=",
273    /* 300 */   ">>",
274    /* 301 */   ">>=",
275    /* 302 */   "*",
276    /* 303 */   "~",
277    /* 304 */   "*=",
278    /* 305 */   "asm",
279    /* 306 */   "auto",
280    /* 307 */   "bool",
281    /* 308 */   "false",
282    /* 309 */   "true",
283    /* 310 */   "break",
284    /* 311 */   "case",
285    /* 312 */   "catch",
286    /* 313 */   "char",
287    /* 314 */   "class",
288    /* 315 */   "const",
289    /* 316 */   "const_cast",
290    /* 317 */   "continue",
291    /* 318 */   "default",
292    /* 319 */   "defined",
293    /* 320 */   "delete",
294    /* 321 */   "do",
295    /* 322 */   "double",
296    /* 323 */   "dynamic_cast",
297    /* 324 */   "else",
298    /* 325 */   "enum",
299    /* 326 */   "explicit",
300    /* 327 */   "export",
301    /* 328 */   "extern",
302    /* 329 */   "float",
303    /* 330 */   "for",
304    /* 331 */   "friend",
305    /* 332 */   "goto",
306    /* 333 */   "if",
307    /* 334 */   "inline",
308    /* 335 */   "int",
309    /* 336 */   "long",
310    /* 337 */   "mutable",
311    /* 338 */   "namespace",
312    /* 339 */   "new",
313    /* 340 */   "operator",
314    /* 341 */   "private",
315    /* 342 */   "protected",
316    /* 343 */   "public",
317    /* 344 */   "register",
318    /* 345 */   "reinterpret_cast",
319    /* 346 */   "return",
320    /* 347 */   "short",
321    /* 348 */   "signed",
322    /* 349 */   "sizeof",
323    /* 350 */   "static",
324    /* 351 */   "static_cast",
325    /* 352 */   "struct",
326    /* 353 */   "switch",
327    /* 354 */   "template",
328    /* 355 */   "this",
329    /* 356 */   "throw",
330    /* 357 */   "try",
331    /* 358 */   "typedef",
332    /* 359 */   "typeid",
333    /* 360 */   "typename",
334    /* 361 */   "union",
335    /* 362 */   "unsigned",
336    /* 363 */   "using",
337    /* 364 */   "virtual",
338    /* 365 */   "void",
339    /* 366 */   "volatile",
340    /* 367 */   "wchar_t",
341    /* 368 */   "while",
342    /* 369 */   "#define",
343    /* 370 */   "#if",
344    /* 371 */   "#ifdef",
345    /* 372 */   "#ifndef",
346    /* 373 */   "#else",
347    /* 374 */   "#elif",
348    /* 375 */   "#endif",
349    /* 376 */   "#error",
350    /* 377 */   "#line",
351    /* 378 */   "#pragma",
352    /* 379 */   "#undef",
353    /* 380 */   "#warning",
354    /* 381 */   "",   // identifier
355    /* 382 */   "",   // octalint
356    /* 383 */   "",   // decimalint
357    /* 384 */   "",   // hexlit
358    /* 385 */   "",   // intlit
359    /* 386 */   "",   // longintlit
360    /* 387 */   "",   // floatlit
361    /* 388 */   "",   // ccomment
362    /* 389 */   "",   // cppcomment
363    /* 390 */   "",   // charlit
364    /* 391 */   "",   // stringlit
365    /* 392 */   "",   // contline
366    /* 393 */   "",   // space
367    /* 394 */   "",   // space2
368    /* 395 */   "\n",
369    /* 396 */   "##",
370    /* 397 */   "#",
371    /* 398 */   "",   // any
372    /* 399 */   "#include",
373    /* 400 */   "#include",
374    /* 401 */   "#include",
375    /* 402 */   "",   // eof
376    /* 403 */   "",   // eoi
377    /* 404 */   "",   // pp-number
378
379              // MS extensions
380    /* 405 */   "__int8",
381    /* 406 */   "__int16",
382    /* 407 */   "__int32",
383    /* 408 */   "__int64",
384    /* 409 */   "__based",
385    /* 410 */   "__declspec",
386    /* 411 */   "__cdecl",
387    /* 412 */   "__fastcall",
388    /* 413 */   "__stdcall",
389    /* 414 */   "__try",
390    /* 415 */   "__except",
391    /* 416 */   "__finally",
392    /* 417 */   "__leave",
393    /* 418 */   "__inline",
394    /* 419 */   "__asm",
395    /* 420 */   "#region",
396    /* 421 */   "#endregion",
397    };   
398     
399    // make sure, I have not forgotten any commas (as I did more than once)
400    BOOST_STATIC_ASSERT(
401        sizeof(tok_values)/sizeof(tok_values[0]) == T_LAST_TOKEN-T_FIRST_TOKEN
402    );
403
404    unsigned int id = BASEID_FROM_TOKEN(tokid)-T_FIRST_TOKEN;
405    return (id < T_LAST_TOKEN-T_FIRST_TOKEN) ? tok_values[id] : "<UnknownToken>";
406}
407
408///////////////////////////////////////////////////////////////////////////////
409}   // namespace wave
410}   // namespace boost
411
412// the suffix header occurs after all of the code
413#ifdef BOOST_HAS_ABI_HEADERS
414#include BOOST_ABI_SUFFIX
415#endif
416
417
Note: See TracBrowser for help on using the repository browser.