| 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 | /////////////////////////////////////////////////////////////////////////////// |
|---|
| 27 | namespace boost { |
|---|
| 28 | namespace wave { |
|---|
| 29 | |
|---|
| 30 | /////////////////////////////////////////////////////////////////////////////// |
|---|
| 31 | // return a token name |
|---|
| 32 | BOOST_WAVE_STRINGTYPE |
|---|
| 33 | get_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. |
|---|
| 39 | static 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 |
|---|
| 221 | char const * |
|---|
| 222 | get_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. |
|---|
| 228 | static 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 | |
|---|