os/ossrv/ossrv_pub/boost_apis/boost/wave/token_ids.hpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     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 #if !defined(TOKEN_IDS_HPP_414E9A58_F079_4789_8AFF_513815CE475B_INCLUDED)
    14 #define TOKEN_IDS_HPP_414E9A58_F079_4789_8AFF_513815CE475B_INCLUDED
    15 
    16 #include <string>
    17 
    18 #include <boost/wave/wave_config.hpp>
    19 
    20 // this must occur after all of the includes and before any code appears
    21 #ifdef BOOST_HAS_ABI_HEADERS
    22 #include BOOST_ABI_PREFIX
    23 #endif
    24 
    25 ///////////////////////////////////////////////////////////////////////////////
    26 //  Allow external redefinition of the token identifiers to use
    27 #if !defined(BOOST_WAVE_TOKEN_IDS_DEFINED)
    28 #define BOOST_WAVE_TOKEN_IDS_DEFINED
    29 
    30 #if defined (__FreeBSD__) && defined (T_DIVIDE)
    31 #undef T_DIVIDE
    32 #endif
    33 
    34 ///////////////////////////////////////////////////////////////////////////////
    35 namespace boost {
    36 namespace wave {
    37 
    38 ///////////////////////////////////////////////////////////////////////////////
    39 //  assemble tokenid's
    40 #define TOKEN_FROM_ID(id, cat)   ((id) | (cat))
    41 #define ID_FROM_TOKEN(tok)       ((tok) & ~TokenTypeMask)
    42 #define BASEID_FROM_TOKEN(tok)   ((tok) & ~ExtTokenTypeMask)
    43 
    44 ///////////////////////////////////////////////////////////////////////////////
    45 //  the token_category helps to classify the different token types 
    46 enum token_category {
    47     IdentifierTokenType         = 0x10000000,
    48     ParameterTokenType          = 0x11000000,
    49     ExtParameterTokenType       = 0x11100000,
    50     KeywordTokenType            = 0x20000000,
    51     OperatorTokenType           = 0x30000000,
    52     LiteralTokenType            = 0x40000000,
    53     IntegerLiteralTokenType     = 0x41000000,
    54     FloatingLiteralTokenType    = 0x42000000,
    55     StringLiteralTokenType      = 0x43000000,
    56     CharacterLiteralTokenType   = 0x44000000,
    57     BoolLiteralTokenType        = 0x45000000,
    58     PPTokenType                 = 0x50000000,
    59     PPConditionalTokenType      = 0x50800000,
    60 
    61     UnknownTokenType            = 0xA0000000,
    62     EOLTokenType                = 0xB0000000,
    63     EOFTokenType                = 0xC0000000,
    64     WhiteSpaceTokenType         = 0xD0000000,
    65     InternalTokenType           = 0xE0000000,
    66     
    67     TokenTypeMask               = 0xFF000000,
    68     AltTokenType                = 0x00100000,
    69     TriGraphTokenType           = 0x00200000,
    70     AltExtTokenType             = 0x00500000,   // and, bit_and etc.
    71     ExtTokenTypeMask            = 0xFFF00000,
    72     ExtTokenOnlyMask            = 0x00F00000,
    73     TokenValueMask              = 0x000FFFFF,
    74     MainTokenMask               = 0xFF0FFFFF    // TokenTypeMask|TokenValueMask
    75 };
    76 
    77 ///////////////////////////////////////////////////////////////////////////////
    78 //  the token_id assigns unique numbers to the different C++ lexemes
    79 enum token_id {
    80     T_UNKNOWN      = 0,
    81     T_FIRST_TOKEN  = 256,
    82     T_AND          = TOKEN_FROM_ID(T_FIRST_TOKEN, OperatorTokenType),
    83     T_AND_ALT      = TOKEN_FROM_ID(T_FIRST_TOKEN, OperatorTokenType|AltExtTokenType),
    84     T_ANDAND       = TOKEN_FROM_ID(257, OperatorTokenType),
    85     T_ANDAND_ALT   = TOKEN_FROM_ID(257, OperatorTokenType|AltExtTokenType),
    86     T_ASSIGN       = TOKEN_FROM_ID(258, OperatorTokenType),
    87     T_ANDASSIGN    = TOKEN_FROM_ID(259, OperatorTokenType),
    88     T_ANDASSIGN_ALT     = TOKEN_FROM_ID(259, OperatorTokenType|AltExtTokenType),
    89     T_OR           = TOKEN_FROM_ID(260, OperatorTokenType),
    90     T_OR_ALT       = TOKEN_FROM_ID(260, OperatorTokenType|AltExtTokenType),
    91     T_OR_TRIGRAPH  = TOKEN_FROM_ID(260, OperatorTokenType|TriGraphTokenType),
    92     T_ORASSIGN     = TOKEN_FROM_ID(261, OperatorTokenType),
    93     T_ORASSIGN_ALT          = TOKEN_FROM_ID(261, OperatorTokenType|AltExtTokenType),
    94     T_ORASSIGN_TRIGRAPH     = TOKEN_FROM_ID(261, OperatorTokenType|TriGraphTokenType),
    95     T_XOR          = TOKEN_FROM_ID(262, OperatorTokenType),
    96     T_XOR_ALT      = TOKEN_FROM_ID(262, OperatorTokenType|AltExtTokenType),
    97     T_XOR_TRIGRAPH = TOKEN_FROM_ID(262, OperatorTokenType|TriGraphTokenType),
    98     T_XORASSIGN    = TOKEN_FROM_ID(263, OperatorTokenType),
    99     T_XORASSIGN_ALT         = TOKEN_FROM_ID(263, OperatorTokenType|AltExtTokenType),
   100     T_XORASSIGN_TRIGRAPH    = TOKEN_FROM_ID(263, OperatorTokenType|TriGraphTokenType),
   101     T_COMMA        = TOKEN_FROM_ID(264, OperatorTokenType),
   102     T_COLON        = TOKEN_FROM_ID(265, OperatorTokenType),
   103     T_DIVIDE       = TOKEN_FROM_ID(266, OperatorTokenType),
   104     T_DIVIDEASSIGN = TOKEN_FROM_ID(267, OperatorTokenType),
   105     T_DOT          = TOKEN_FROM_ID(268, OperatorTokenType),
   106     T_DOTSTAR      = TOKEN_FROM_ID(269, OperatorTokenType),
   107     T_ELLIPSIS     = TOKEN_FROM_ID(270, OperatorTokenType),
   108     T_EQUAL        = TOKEN_FROM_ID(271, OperatorTokenType),
   109     T_GREATER      = TOKEN_FROM_ID(272, OperatorTokenType),
   110     T_GREATEREQUAL = TOKEN_FROM_ID(273, OperatorTokenType),
   111     T_LEFTBRACE    = TOKEN_FROM_ID(274, OperatorTokenType),
   112     T_LEFTBRACE_ALT         = TOKEN_FROM_ID(274, OperatorTokenType|AltTokenType),
   113     T_LEFTBRACE_TRIGRAPH    = TOKEN_FROM_ID(274, OperatorTokenType|TriGraphTokenType),
   114     T_LESS         = TOKEN_FROM_ID(275, OperatorTokenType),
   115     T_LESSEQUAL    = TOKEN_FROM_ID(276, OperatorTokenType),
   116     T_LEFTPAREN    = TOKEN_FROM_ID(277, OperatorTokenType),
   117     T_LEFTBRACKET  = TOKEN_FROM_ID(278, OperatorTokenType),
   118     T_LEFTBRACKET_ALT       = TOKEN_FROM_ID(278, OperatorTokenType|AltTokenType),
   119     T_LEFTBRACKET_TRIGRAPH  = TOKEN_FROM_ID(278, OperatorTokenType|TriGraphTokenType),
   120     T_MINUS        = TOKEN_FROM_ID(279, OperatorTokenType),
   121     T_MINUSASSIGN  = TOKEN_FROM_ID(280, OperatorTokenType),
   122     T_MINUSMINUS   = TOKEN_FROM_ID(281, OperatorTokenType),
   123     T_PERCENT      = TOKEN_FROM_ID(282, OperatorTokenType),
   124     T_PERCENTASSIGN = TOKEN_FROM_ID(283, OperatorTokenType),
   125     T_NOT          = TOKEN_FROM_ID(284, OperatorTokenType),
   126     T_NOT_ALT      = TOKEN_FROM_ID(284, OperatorTokenType|AltExtTokenType),
   127     T_NOTEQUAL     = TOKEN_FROM_ID(285, OperatorTokenType),
   128     T_NOTEQUAL_ALT      = TOKEN_FROM_ID(285, OperatorTokenType|AltExtTokenType),
   129     T_OROR         = TOKEN_FROM_ID(286, OperatorTokenType),
   130     T_OROR_ALT     = TOKEN_FROM_ID(286, OperatorTokenType|AltExtTokenType),
   131     T_OROR_TRIGRAPH     = TOKEN_FROM_ID(286, OperatorTokenType|TriGraphTokenType),
   132     T_PLUS         = TOKEN_FROM_ID(287, OperatorTokenType),
   133     T_PLUSASSIGN   = TOKEN_FROM_ID(288, OperatorTokenType),
   134     T_PLUSPLUS     = TOKEN_FROM_ID(289, OperatorTokenType),
   135     T_ARROW        = TOKEN_FROM_ID(290, OperatorTokenType),
   136     T_ARROWSTAR    = TOKEN_FROM_ID(291, OperatorTokenType),
   137     T_QUESTION_MARK = TOKEN_FROM_ID(292, OperatorTokenType),
   138     T_RIGHTBRACE   = TOKEN_FROM_ID(293, OperatorTokenType),
   139     T_RIGHTBRACE_ALT        = TOKEN_FROM_ID(293, OperatorTokenType|AltTokenType),
   140     T_RIGHTBRACE_TRIGRAPH   = TOKEN_FROM_ID(293, OperatorTokenType|TriGraphTokenType),
   141     T_RIGHTPAREN   = TOKEN_FROM_ID(294, OperatorTokenType),
   142     T_RIGHTBRACKET = TOKEN_FROM_ID(295, OperatorTokenType),
   143     T_RIGHTBRACKET_ALT      = TOKEN_FROM_ID(295, OperatorTokenType|AltTokenType),
   144     T_RIGHTBRACKET_TRIGRAPH = TOKEN_FROM_ID(295, OperatorTokenType|TriGraphTokenType),
   145     T_COLON_COLON  = TOKEN_FROM_ID(296, OperatorTokenType),
   146     T_SEMICOLON    = TOKEN_FROM_ID(297, OperatorTokenType),
   147     T_SHIFTLEFT    = TOKEN_FROM_ID(298, OperatorTokenType),
   148     T_SHIFTLEFTASSIGN = TOKEN_FROM_ID(299, OperatorTokenType),
   149     T_SHIFTRIGHT   = TOKEN_FROM_ID(300, OperatorTokenType),
   150     T_SHIFTRIGHTASSIGN = TOKEN_FROM_ID(301, OperatorTokenType),
   151     T_STAR         = TOKEN_FROM_ID(302, OperatorTokenType),
   152     T_COMPL        = TOKEN_FROM_ID(303, OperatorTokenType),
   153     T_COMPL_ALT         = TOKEN_FROM_ID(303, OperatorTokenType|AltExtTokenType),
   154     T_COMPL_TRIGRAPH    = TOKEN_FROM_ID(303, OperatorTokenType|TriGraphTokenType),
   155     T_STARASSIGN   = TOKEN_FROM_ID(304, OperatorTokenType),
   156     T_ASM          = TOKEN_FROM_ID(305, KeywordTokenType),
   157     T_AUTO         = TOKEN_FROM_ID(306, KeywordTokenType),
   158     T_BOOL         = TOKEN_FROM_ID(307, KeywordTokenType),
   159     T_FALSE        = TOKEN_FROM_ID(308, BoolLiteralTokenType),
   160     T_TRUE         = TOKEN_FROM_ID(309, BoolLiteralTokenType),
   161     T_BREAK        = TOKEN_FROM_ID(310, KeywordTokenType),
   162     T_CASE         = TOKEN_FROM_ID(311, KeywordTokenType),
   163     T_CATCH        = TOKEN_FROM_ID(312, KeywordTokenType),
   164     T_CHAR         = TOKEN_FROM_ID(313, KeywordTokenType),
   165     T_CLASS        = TOKEN_FROM_ID(314, KeywordTokenType),
   166     T_CONST        = TOKEN_FROM_ID(315, KeywordTokenType),
   167     T_CONSTCAST    = TOKEN_FROM_ID(316, KeywordTokenType),
   168     T_CONTINUE     = TOKEN_FROM_ID(317, KeywordTokenType),
   169     T_DEFAULT      = TOKEN_FROM_ID(318, KeywordTokenType),
   170     T_DEFINED      = TOKEN_FROM_ID(319, KeywordTokenType),
   171     T_DELETE       = TOKEN_FROM_ID(320, KeywordTokenType),
   172     T_DO           = TOKEN_FROM_ID(321, KeywordTokenType),
   173     T_DOUBLE       = TOKEN_FROM_ID(322, KeywordTokenType),
   174     T_DYNAMICCAST  = TOKEN_FROM_ID(323, KeywordTokenType),
   175     T_ELSE         = TOKEN_FROM_ID(324, KeywordTokenType),
   176     T_ENUM         = TOKEN_FROM_ID(325, KeywordTokenType),
   177     T_EXPLICIT     = TOKEN_FROM_ID(326, KeywordTokenType),
   178     T_EXPORT       = TOKEN_FROM_ID(327, KeywordTokenType),
   179     T_EXTERN       = TOKEN_FROM_ID(328, KeywordTokenType),
   180     T_FLOAT        = TOKEN_FROM_ID(329, KeywordTokenType),
   181     T_FOR          = TOKEN_FROM_ID(330, KeywordTokenType),
   182     T_FRIEND       = TOKEN_FROM_ID(331, KeywordTokenType),
   183     T_GOTO         = TOKEN_FROM_ID(332, KeywordTokenType),
   184     T_IF           = TOKEN_FROM_ID(333, KeywordTokenType),
   185     T_INLINE       = TOKEN_FROM_ID(334, KeywordTokenType),
   186     T_INT          = TOKEN_FROM_ID(335, KeywordTokenType),
   187     T_LONG         = TOKEN_FROM_ID(336, KeywordTokenType),
   188     T_MUTABLE      = TOKEN_FROM_ID(337, KeywordTokenType),
   189     T_NAMESPACE    = TOKEN_FROM_ID(338, KeywordTokenType),
   190     T_NEW          = TOKEN_FROM_ID(339, KeywordTokenType),
   191     T_OPERATOR     = TOKEN_FROM_ID(340, KeywordTokenType),
   192     T_PRIVATE      = TOKEN_FROM_ID(341, KeywordTokenType),
   193     T_PROTECTED    = TOKEN_FROM_ID(342, KeywordTokenType),
   194     T_PUBLIC       = TOKEN_FROM_ID(343, KeywordTokenType),
   195     T_REGISTER     = TOKEN_FROM_ID(344, KeywordTokenType),
   196     T_REINTERPRETCAST = TOKEN_FROM_ID(345, KeywordTokenType),
   197     T_RETURN       = TOKEN_FROM_ID(346, KeywordTokenType),
   198     T_SHORT        = TOKEN_FROM_ID(347, KeywordTokenType),
   199     T_SIGNED       = TOKEN_FROM_ID(348, KeywordTokenType),
   200     T_SIZEOF       = TOKEN_FROM_ID(349, KeywordTokenType),
   201     T_STATIC       = TOKEN_FROM_ID(350, KeywordTokenType),
   202     T_STATICCAST   = TOKEN_FROM_ID(351, KeywordTokenType),
   203     T_STRUCT       = TOKEN_FROM_ID(352, KeywordTokenType),
   204     T_SWITCH       = TOKEN_FROM_ID(353, KeywordTokenType),
   205     T_TEMPLATE     = TOKEN_FROM_ID(354, KeywordTokenType),
   206     T_THIS         = TOKEN_FROM_ID(355, KeywordTokenType),
   207     T_THROW        = TOKEN_FROM_ID(356, KeywordTokenType),
   208     T_TRY          = TOKEN_FROM_ID(357, KeywordTokenType),
   209     T_TYPEDEF      = TOKEN_FROM_ID(358, KeywordTokenType),
   210     T_TYPEID       = TOKEN_FROM_ID(359, KeywordTokenType),
   211     T_TYPENAME     = TOKEN_FROM_ID(360, KeywordTokenType),
   212     T_UNION        = TOKEN_FROM_ID(361, KeywordTokenType),
   213     T_UNSIGNED     = TOKEN_FROM_ID(362, KeywordTokenType),
   214     T_USING        = TOKEN_FROM_ID(363, KeywordTokenType),
   215     T_VIRTUAL      = TOKEN_FROM_ID(364, KeywordTokenType),
   216     T_VOID         = TOKEN_FROM_ID(365, KeywordTokenType),
   217     T_VOLATILE     = TOKEN_FROM_ID(366, KeywordTokenType),
   218     T_WCHART       = TOKEN_FROM_ID(367, KeywordTokenType),
   219     T_WHILE        = TOKEN_FROM_ID(368, KeywordTokenType),
   220     T_PP_DEFINE    = TOKEN_FROM_ID(369, PPTokenType),
   221     T_PP_IF        = TOKEN_FROM_ID(370, PPConditionalTokenType),
   222     T_PP_IFDEF     = TOKEN_FROM_ID(371, PPConditionalTokenType),
   223     T_PP_IFNDEF    = TOKEN_FROM_ID(372, PPConditionalTokenType),
   224     T_PP_ELSE      = TOKEN_FROM_ID(373, PPConditionalTokenType),
   225     T_PP_ELIF      = TOKEN_FROM_ID(374, PPConditionalTokenType),
   226     T_PP_ENDIF     = TOKEN_FROM_ID(375, PPConditionalTokenType),
   227     T_PP_ERROR     = TOKEN_FROM_ID(376, PPTokenType),
   228     T_PP_LINE      = TOKEN_FROM_ID(377, PPTokenType),
   229     T_PP_PRAGMA    = TOKEN_FROM_ID(378, PPTokenType),
   230     T_PP_UNDEF     = TOKEN_FROM_ID(379, PPTokenType),
   231     T_PP_WARNING   = TOKEN_FROM_ID(380, PPTokenType),
   232     T_IDENTIFIER   = TOKEN_FROM_ID(381, IdentifierTokenType),
   233     T_OCTALINT     = TOKEN_FROM_ID(382, IntegerLiteralTokenType),
   234     T_DECIMALINT   = TOKEN_FROM_ID(383, IntegerLiteralTokenType),
   235     T_HEXAINT      = TOKEN_FROM_ID(384, IntegerLiteralTokenType),
   236     T_INTLIT       = TOKEN_FROM_ID(385, IntegerLiteralTokenType),
   237     T_LONGINTLIT   = TOKEN_FROM_ID(386, IntegerLiteralTokenType),
   238     T_FLOATLIT     = TOKEN_FROM_ID(387, FloatingLiteralTokenType),
   239     T_FIXEDPOINTLIT = TOKEN_FROM_ID(387, FloatingLiteralTokenType|AltTokenType),  // IDL specific
   240     T_CCOMMENT     = TOKEN_FROM_ID(388, WhiteSpaceTokenType|AltTokenType),
   241     T_CPPCOMMENT   = TOKEN_FROM_ID(389, WhiteSpaceTokenType|AltTokenType),
   242     T_CHARLIT      = TOKEN_FROM_ID(390, CharacterLiteralTokenType),
   243     T_STRINGLIT    = TOKEN_FROM_ID(391, StringLiteralTokenType),
   244     T_CONTLINE     = TOKEN_FROM_ID(392, EOLTokenType),
   245     T_SPACE        = TOKEN_FROM_ID(393, WhiteSpaceTokenType),
   246     T_SPACE2       = TOKEN_FROM_ID(394, WhiteSpaceTokenType),
   247     T_NEWLINE      = TOKEN_FROM_ID(395, EOLTokenType),
   248     T_GENERATEDNEWLINE      = TOKEN_FROM_ID(395, EOLTokenType|AltTokenType),
   249     T_POUND_POUND           = TOKEN_FROM_ID(396, OperatorTokenType),
   250     T_POUND_POUND_ALT       = TOKEN_FROM_ID(396, OperatorTokenType|AltTokenType),
   251     T_POUND_POUND_TRIGRAPH  = TOKEN_FROM_ID(396, OperatorTokenType|TriGraphTokenType),
   252     T_POUND                 = TOKEN_FROM_ID(397, OperatorTokenType),
   253     T_POUND_ALT             = TOKEN_FROM_ID(397, OperatorTokenType|AltTokenType),
   254     T_POUND_TRIGRAPH        = TOKEN_FROM_ID(397, OperatorTokenType|TriGraphTokenType),
   255     T_ANY          = TOKEN_FROM_ID(398, UnknownTokenType),
   256     T_ANY_TRIGRAPH = TOKEN_FROM_ID(398, UnknownTokenType|TriGraphTokenType),
   257     T_PP_INCLUDE   = TOKEN_FROM_ID(399, PPTokenType),
   258     T_PP_QHEADER   = TOKEN_FROM_ID(400, PPTokenType),
   259     T_PP_HHEADER   = TOKEN_FROM_ID(401, PPTokenType),
   260     T_PP_INCLUDE_NEXT   = TOKEN_FROM_ID(399, PPTokenType|AltTokenType),
   261     T_PP_QHEADER_NEXT   = TOKEN_FROM_ID(400, PPTokenType|AltTokenType),
   262     T_PP_HHEADER_NEXT   = TOKEN_FROM_ID(401, PPTokenType|AltTokenType),
   263     T_EOF          = TOKEN_FROM_ID(402, EOFTokenType),      // end of file reached
   264     T_EOI          = TOKEN_FROM_ID(403, EOFTokenType),      // end of input reached
   265     T_PP_NUMBER    = TOKEN_FROM_ID(404, InternalTokenType),
   266     
   267 // MS extensions
   268     T_MSEXT_INT8   = TOKEN_FROM_ID(405, KeywordTokenType),
   269     T_MSEXT_INT16  = TOKEN_FROM_ID(406, KeywordTokenType),
   270     T_MSEXT_INT32  = TOKEN_FROM_ID(407, KeywordTokenType),
   271     T_MSEXT_INT64  = TOKEN_FROM_ID(408, KeywordTokenType),
   272     T_MSEXT_BASED  = TOKEN_FROM_ID(409, KeywordTokenType),
   273     T_MSEXT_DECLSPEC = TOKEN_FROM_ID(410, KeywordTokenType),
   274     T_MSEXT_CDECL  = TOKEN_FROM_ID(411, KeywordTokenType),
   275     T_MSEXT_FASTCALL = TOKEN_FROM_ID(412, KeywordTokenType),
   276     T_MSEXT_STDCALL = TOKEN_FROM_ID(413, KeywordTokenType),
   277     T_MSEXT_TRY    = TOKEN_FROM_ID(414, KeywordTokenType),
   278     T_MSEXT_EXCEPT = TOKEN_FROM_ID(415, KeywordTokenType),
   279     T_MSEXT_FINALLY = TOKEN_FROM_ID(416, KeywordTokenType),
   280     T_MSEXT_LEAVE  = TOKEN_FROM_ID(417, KeywordTokenType),
   281     T_MSEXT_INLINE = TOKEN_FROM_ID(418, KeywordTokenType),
   282     T_MSEXT_ASM    = TOKEN_FROM_ID(419, KeywordTokenType),
   283 
   284     T_MSEXT_PP_REGION    = TOKEN_FROM_ID(420, PPTokenType),
   285     T_MSEXT_PP_ENDREGION = TOKEN_FROM_ID(421, PPTokenType),
   286     
   287     T_LAST_TOKEN_ID,
   288     T_LAST_TOKEN = ID_FROM_TOKEN(T_LAST_TOKEN_ID),
   289     
   290 // pseudo tokens to help streamlining macro replacement, these should not 
   291 // returned from the lexer nor should these be returned from the pp-iterator
   292     T_NONREPLACABLE_IDENTIFIER = TOKEN_FROM_ID(T_LAST_TOKEN+1, IdentifierTokenType),
   293     T_PLACEHOLDER = TOKEN_FROM_ID(T_LAST_TOKEN+2, WhiteSpaceTokenType),
   294     T_PLACEMARKER = TOKEN_FROM_ID(T_LAST_TOKEN+3, InternalTokenType),
   295     T_PARAMETERBASE = TOKEN_FROM_ID(T_LAST_TOKEN+4, ParameterTokenType),
   296     T_EXTPARAMETERBASE = TOKEN_FROM_ID(T_LAST_TOKEN+5, ExtParameterTokenType)
   297 };
   298 
   299 ///////////////////////////////////////////////////////////////////////////////
   300 //  redefine the TOKEN_FROM_ID macro to be more type safe
   301 #undef TOKEN_FROM_ID
   302 #define TOKEN_FROM_ID(id, cat)   boost::wave::token_id((id) | (cat))
   303 
   304 #undef ID_FROM_TOKEN
   305 #define ID_FROM_TOKEN(tok)       ((tok) & ~boost::wave::TokenTypeMask)
   306 
   307 #undef BASEID_FROM_TOKEN
   308 #define BASEID_FROM_TOKEN(tok)                                                \
   309     boost::wave::token_id(((tok) & ~boost::wave::ExtTokenTypeMask))           \
   310     /**/
   311 #define BASE_TOKEN(tok)                                                       \
   312     boost::wave::token_id((tok) & boost::wave::MainTokenMask)                 \
   313     /**/
   314 #define CATEGORY_FROM_TOKEN(tok) ((tok) & boost::wave::TokenTypeMask)
   315 #define EXTCATEGORY_FROM_TOKEN(tok) ((tok) & boost::wave::ExtTokenTypeMask)
   316 #define IS_CATEGORY(tok, cat)                                                 \
   317     ((CATEGORY_FROM_TOKEN(tok) == (cat)) ? true : false)                      \
   318     /**/
   319 #define IS_EXTCATEGORY(tok, cat)                                              \
   320     ((EXTCATEGORY_FROM_TOKEN(tok) == (cat)) ? true : false)                   \
   321     /**/
   322 
   323 ///////////////////////////////////////////////////////////////////////////////
   324 //  return a token name
   325 BOOST_WAVE_DECL 
   326 BOOST_WAVE_STRINGTYPE get_token_name(token_id tokid);
   327 
   328 ///////////////////////////////////////////////////////////////////////////////
   329 //  return a token name
   330 BOOST_WAVE_DECL 
   331 char const *get_token_value(token_id tokid);
   332 
   333 ///////////////////////////////////////////////////////////////////////////////
   334 }   // namespace wave
   335 }   // namespace boost
   336 
   337 #endif // #if !defined(BOOST_WAVE_TOKEN_IDS_DEFINED)
   338 
   339 // the suffix header occurs after all of the code
   340 #ifdef BOOST_HAS_ABI_HEADERS
   341 #include BOOST_ABI_SUFFIX
   342 #endif
   343 
   344 #endif // !defined(TOKEN_IDS_HPP_414E9A58_F079_4789_8AFF_513815CE475B_INCLUDED)
   345