Chris@16: /*============================================================================= Chris@16: Boost.Wave: A Standard compliant C++ preprocessor library Chris@16: The definition of a default set of token identifiers and related Chris@16: functions. Chris@16: Chris@16: http://www.boost.org/ Chris@16: Chris@16: Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost Chris@16: Software License, Version 1.0. (See accompanying file Chris@16: LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: =============================================================================*/ Chris@16: Chris@16: #if !defined(TOKEN_IDS_HPP_414E9A58_F079_4789_8AFF_513815CE475B_INCLUDED) Chris@16: #define TOKEN_IDS_HPP_414E9A58_F079_4789_8AFF_513815CE475B_INCLUDED Chris@16: Chris@16: #include Chris@16: Chris@16: #include Chris@16: Chris@16: // this must occur after all of the includes and before any code appears Chris@16: #ifdef BOOST_HAS_ABI_HEADERS Chris@16: #include BOOST_ABI_PREFIX Chris@16: #endif Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // Allow external redefinition of the token identifiers to use Chris@16: #if !defined(BOOST_WAVE_TOKEN_IDS_DEFINED) Chris@16: #define BOOST_WAVE_TOKEN_IDS_DEFINED Chris@16: Chris@16: #if (defined (__FreeBSD__) || defined (__DragonFly__) || defined (__OpenBSD__)) && defined (T_DIVIDE) Chris@16: #undef T_DIVIDE Chris@16: #endif Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: namespace boost { Chris@16: namespace wave { Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // assemble tokenids Chris@16: #define TOKEN_FROM_ID(id, cat) ((id) | (cat)) Chris@16: #define ID_FROM_TOKEN(tok) ((tok) & ~TokenTypeMask) Chris@16: #define BASEID_FROM_TOKEN(tok) ((tok) & ~ExtTokenTypeMask) Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // the token_category helps to classify the different token types Chris@16: enum token_category { Chris@16: IdentifierTokenType = 0x10080000, Chris@16: ParameterTokenType = 0x11080000, Chris@16: ExtParameterTokenType = 0x11180000, Chris@16: KeywordTokenType = 0x20080000, Chris@16: OperatorTokenType = 0x30080000, Chris@16: LiteralTokenType = 0x40080000, Chris@16: IntegerLiteralTokenType = 0x41080000, Chris@16: FloatingLiteralTokenType = 0x42080000, Chris@16: StringLiteralTokenType = 0x43080000, Chris@16: CharacterLiteralTokenType = 0x44080000, Chris@16: BoolLiteralTokenType = 0x45080000, Chris@16: PPTokenType = 0x50080000, Chris@16: PPConditionalTokenType = 0x50880000, Chris@16: Chris@16: UnknownTokenType = 0xA0000000, Chris@16: EOLTokenType = 0xB0000000, Chris@16: EOFTokenType = 0xC0000000, Chris@16: WhiteSpaceTokenType = 0xD0000000, Chris@16: InternalTokenType = 0xE0080000, Chris@16: Chris@16: TokenTypeMask = 0xFF000000, Chris@16: AltTokenType = 0x00100000, Chris@16: TriGraphTokenType = 0x00200000, Chris@16: AltExtTokenType = 0x00500000, // and, bit_and etc. Chris@16: PPTokenFlag = 0x00080000, // these are 'real' pp-tokens Chris@16: ExtTokenTypeMask = 0xFFF00000, Chris@16: ExtTokenOnlyMask = 0x00F00000, Chris@16: TokenValueMask = 0x000FFFFF, Chris@16: MainTokenMask = 0xFF0FFFFF // TokenTypeMask|TokenValueMask Chris@16: }; Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // the token_id assigns unique numbers to the different C++ lexemes Chris@16: enum token_id { Chris@16: T_UNKNOWN = 0, Chris@16: T_FIRST_TOKEN = 256, Chris@16: T_AND = TOKEN_FROM_ID(T_FIRST_TOKEN, OperatorTokenType), Chris@16: T_AND_ALT = TOKEN_FROM_ID(T_FIRST_TOKEN, OperatorTokenType|AltExtTokenType), Chris@16: T_ANDAND = TOKEN_FROM_ID(257, OperatorTokenType), Chris@16: T_ANDAND_ALT = TOKEN_FROM_ID(257, OperatorTokenType|AltExtTokenType), Chris@16: T_ASSIGN = TOKEN_FROM_ID(258, OperatorTokenType), Chris@16: T_ANDASSIGN = TOKEN_FROM_ID(259, OperatorTokenType), Chris@16: T_ANDASSIGN_ALT = TOKEN_FROM_ID(259, OperatorTokenType|AltExtTokenType), Chris@16: T_OR = TOKEN_FROM_ID(260, OperatorTokenType), Chris@16: T_OR_ALT = TOKEN_FROM_ID(260, OperatorTokenType|AltExtTokenType), Chris@16: T_OR_TRIGRAPH = TOKEN_FROM_ID(260, OperatorTokenType|TriGraphTokenType), Chris@16: T_ORASSIGN = TOKEN_FROM_ID(261, OperatorTokenType), Chris@16: T_ORASSIGN_ALT = TOKEN_FROM_ID(261, OperatorTokenType|AltExtTokenType), Chris@16: T_ORASSIGN_TRIGRAPH = TOKEN_FROM_ID(261, OperatorTokenType|TriGraphTokenType), Chris@16: T_XOR = TOKEN_FROM_ID(262, OperatorTokenType), Chris@16: T_XOR_ALT = TOKEN_FROM_ID(262, OperatorTokenType|AltExtTokenType), Chris@16: T_XOR_TRIGRAPH = TOKEN_FROM_ID(262, OperatorTokenType|TriGraphTokenType), Chris@16: T_XORASSIGN = TOKEN_FROM_ID(263, OperatorTokenType), Chris@16: T_XORASSIGN_ALT = TOKEN_FROM_ID(263, OperatorTokenType|AltExtTokenType), Chris@16: T_XORASSIGN_TRIGRAPH = TOKEN_FROM_ID(263, OperatorTokenType|TriGraphTokenType), Chris@16: T_COMMA = TOKEN_FROM_ID(264, OperatorTokenType), Chris@16: T_COLON = TOKEN_FROM_ID(265, OperatorTokenType), Chris@16: T_DIVIDE = TOKEN_FROM_ID(266, OperatorTokenType), Chris@16: T_DIVIDEASSIGN = TOKEN_FROM_ID(267, OperatorTokenType), Chris@16: T_DOT = TOKEN_FROM_ID(268, OperatorTokenType), Chris@16: T_DOTSTAR = TOKEN_FROM_ID(269, OperatorTokenType), Chris@16: T_ELLIPSIS = TOKEN_FROM_ID(270, OperatorTokenType), Chris@16: T_EQUAL = TOKEN_FROM_ID(271, OperatorTokenType), Chris@16: T_GREATER = TOKEN_FROM_ID(272, OperatorTokenType), Chris@16: T_GREATEREQUAL = TOKEN_FROM_ID(273, OperatorTokenType), Chris@16: T_LEFTBRACE = TOKEN_FROM_ID(274, OperatorTokenType), Chris@16: T_LEFTBRACE_ALT = TOKEN_FROM_ID(274, OperatorTokenType|AltTokenType), Chris@16: T_LEFTBRACE_TRIGRAPH = TOKEN_FROM_ID(274, OperatorTokenType|TriGraphTokenType), Chris@16: T_LESS = TOKEN_FROM_ID(275, OperatorTokenType), Chris@16: T_LESSEQUAL = TOKEN_FROM_ID(276, OperatorTokenType), Chris@16: T_LEFTPAREN = TOKEN_FROM_ID(277, OperatorTokenType), Chris@16: T_LEFTBRACKET = TOKEN_FROM_ID(278, OperatorTokenType), Chris@16: T_LEFTBRACKET_ALT = TOKEN_FROM_ID(278, OperatorTokenType|AltTokenType), Chris@16: T_LEFTBRACKET_TRIGRAPH = TOKEN_FROM_ID(278, OperatorTokenType|TriGraphTokenType), Chris@16: T_MINUS = TOKEN_FROM_ID(279, OperatorTokenType), Chris@16: T_MINUSASSIGN = TOKEN_FROM_ID(280, OperatorTokenType), Chris@16: T_MINUSMINUS = TOKEN_FROM_ID(281, OperatorTokenType), Chris@16: T_PERCENT = TOKEN_FROM_ID(282, OperatorTokenType), Chris@16: T_PERCENTASSIGN = TOKEN_FROM_ID(283, OperatorTokenType), Chris@16: T_NOT = TOKEN_FROM_ID(284, OperatorTokenType), Chris@16: T_NOT_ALT = TOKEN_FROM_ID(284, OperatorTokenType|AltExtTokenType), Chris@16: T_NOTEQUAL = TOKEN_FROM_ID(285, OperatorTokenType), Chris@16: T_NOTEQUAL_ALT = TOKEN_FROM_ID(285, OperatorTokenType|AltExtTokenType), Chris@16: T_OROR = TOKEN_FROM_ID(286, OperatorTokenType), Chris@16: T_OROR_ALT = TOKEN_FROM_ID(286, OperatorTokenType|AltExtTokenType), Chris@16: T_OROR_TRIGRAPH = TOKEN_FROM_ID(286, OperatorTokenType|TriGraphTokenType), Chris@16: T_PLUS = TOKEN_FROM_ID(287, OperatorTokenType), Chris@16: T_PLUSASSIGN = TOKEN_FROM_ID(288, OperatorTokenType), Chris@16: T_PLUSPLUS = TOKEN_FROM_ID(289, OperatorTokenType), Chris@16: T_ARROW = TOKEN_FROM_ID(290, OperatorTokenType), Chris@16: T_ARROWSTAR = TOKEN_FROM_ID(291, OperatorTokenType), Chris@16: T_QUESTION_MARK = TOKEN_FROM_ID(292, OperatorTokenType), Chris@16: T_RIGHTBRACE = TOKEN_FROM_ID(293, OperatorTokenType), Chris@16: T_RIGHTBRACE_ALT = TOKEN_FROM_ID(293, OperatorTokenType|AltTokenType), Chris@16: T_RIGHTBRACE_TRIGRAPH = TOKEN_FROM_ID(293, OperatorTokenType|TriGraphTokenType), Chris@16: T_RIGHTPAREN = TOKEN_FROM_ID(294, OperatorTokenType), Chris@16: T_RIGHTBRACKET = TOKEN_FROM_ID(295, OperatorTokenType), Chris@16: T_RIGHTBRACKET_ALT = TOKEN_FROM_ID(295, OperatorTokenType|AltTokenType), Chris@16: T_RIGHTBRACKET_TRIGRAPH = TOKEN_FROM_ID(295, OperatorTokenType|TriGraphTokenType), Chris@16: T_COLON_COLON = TOKEN_FROM_ID(296, OperatorTokenType), Chris@16: T_SEMICOLON = TOKEN_FROM_ID(297, OperatorTokenType), Chris@16: T_SHIFTLEFT = TOKEN_FROM_ID(298, OperatorTokenType), Chris@16: T_SHIFTLEFTASSIGN = TOKEN_FROM_ID(299, OperatorTokenType), Chris@16: T_SHIFTRIGHT = TOKEN_FROM_ID(300, OperatorTokenType), Chris@16: T_SHIFTRIGHTASSIGN = TOKEN_FROM_ID(301, OperatorTokenType), Chris@16: T_STAR = TOKEN_FROM_ID(302, OperatorTokenType), Chris@16: T_COMPL = TOKEN_FROM_ID(303, OperatorTokenType), Chris@16: T_COMPL_ALT = TOKEN_FROM_ID(303, OperatorTokenType|AltExtTokenType), Chris@16: T_COMPL_TRIGRAPH = TOKEN_FROM_ID(303, OperatorTokenType|TriGraphTokenType), Chris@16: T_STARASSIGN = TOKEN_FROM_ID(304, OperatorTokenType), Chris@16: T_ASM = TOKEN_FROM_ID(305, KeywordTokenType), Chris@16: T_AUTO = TOKEN_FROM_ID(306, KeywordTokenType), Chris@16: T_BOOL = TOKEN_FROM_ID(307, KeywordTokenType), Chris@16: T_FALSE = TOKEN_FROM_ID(308, BoolLiteralTokenType), Chris@16: T_TRUE = TOKEN_FROM_ID(309, BoolLiteralTokenType), Chris@16: T_BREAK = TOKEN_FROM_ID(310, KeywordTokenType), Chris@16: T_CASE = TOKEN_FROM_ID(311, KeywordTokenType), Chris@16: T_CATCH = TOKEN_FROM_ID(312, KeywordTokenType), Chris@16: T_CHAR = TOKEN_FROM_ID(313, KeywordTokenType), Chris@16: T_CLASS = TOKEN_FROM_ID(314, KeywordTokenType), Chris@16: T_CONST = TOKEN_FROM_ID(315, KeywordTokenType), Chris@16: T_CONSTCAST = TOKEN_FROM_ID(316, KeywordTokenType), Chris@16: T_CONTINUE = TOKEN_FROM_ID(317, KeywordTokenType), Chris@16: T_DEFAULT = TOKEN_FROM_ID(318, KeywordTokenType), Chris@16: T_DELETE = TOKEN_FROM_ID(319, KeywordTokenType), Chris@16: T_DO = TOKEN_FROM_ID(320, KeywordTokenType), Chris@16: T_DOUBLE = TOKEN_FROM_ID(321, KeywordTokenType), Chris@16: T_DYNAMICCAST = TOKEN_FROM_ID(322, KeywordTokenType), Chris@16: T_ELSE = TOKEN_FROM_ID(323, KeywordTokenType), Chris@16: T_ENUM = TOKEN_FROM_ID(324, KeywordTokenType), Chris@16: T_EXPLICIT = TOKEN_FROM_ID(325, KeywordTokenType), Chris@16: T_EXPORT = TOKEN_FROM_ID(326, KeywordTokenType), Chris@16: T_EXTERN = TOKEN_FROM_ID(327, KeywordTokenType), Chris@16: T_FLOAT = TOKEN_FROM_ID(328, KeywordTokenType), Chris@16: T_FOR = TOKEN_FROM_ID(329, KeywordTokenType), Chris@16: T_FRIEND = TOKEN_FROM_ID(330, KeywordTokenType), Chris@16: T_GOTO = TOKEN_FROM_ID(331, KeywordTokenType), Chris@16: T_IF = TOKEN_FROM_ID(332, KeywordTokenType), Chris@16: T_INLINE = TOKEN_FROM_ID(333, KeywordTokenType), Chris@16: T_INT = TOKEN_FROM_ID(334, KeywordTokenType), Chris@16: T_LONG = TOKEN_FROM_ID(335, KeywordTokenType), Chris@16: T_MUTABLE = TOKEN_FROM_ID(336, KeywordTokenType), Chris@16: T_NAMESPACE = TOKEN_FROM_ID(337, KeywordTokenType), Chris@16: T_NEW = TOKEN_FROM_ID(338, KeywordTokenType), Chris@16: T_OPERATOR = TOKEN_FROM_ID(339, KeywordTokenType), Chris@16: T_PRIVATE = TOKEN_FROM_ID(340, KeywordTokenType), Chris@16: T_PROTECTED = TOKEN_FROM_ID(341, KeywordTokenType), Chris@16: T_PUBLIC = TOKEN_FROM_ID(342, KeywordTokenType), Chris@16: T_REGISTER = TOKEN_FROM_ID(343, KeywordTokenType), Chris@16: T_REINTERPRETCAST = TOKEN_FROM_ID(344, KeywordTokenType), Chris@16: T_RETURN = TOKEN_FROM_ID(345, KeywordTokenType), Chris@16: T_SHORT = TOKEN_FROM_ID(346, KeywordTokenType), Chris@16: T_SIGNED = TOKEN_FROM_ID(347, KeywordTokenType), Chris@16: T_SIZEOF = TOKEN_FROM_ID(348, KeywordTokenType), Chris@16: T_STATIC = TOKEN_FROM_ID(349, KeywordTokenType), Chris@16: T_STATICCAST = TOKEN_FROM_ID(350, KeywordTokenType), Chris@16: T_STRUCT = TOKEN_FROM_ID(351, KeywordTokenType), Chris@16: T_SWITCH = TOKEN_FROM_ID(352, KeywordTokenType), Chris@16: T_TEMPLATE = TOKEN_FROM_ID(353, KeywordTokenType), Chris@16: T_THIS = TOKEN_FROM_ID(354, KeywordTokenType), Chris@16: T_THROW = TOKEN_FROM_ID(355, KeywordTokenType), Chris@16: T_TRY = TOKEN_FROM_ID(356, KeywordTokenType), Chris@16: T_TYPEDEF = TOKEN_FROM_ID(357, KeywordTokenType), Chris@16: T_TYPEID = TOKEN_FROM_ID(358, KeywordTokenType), Chris@16: T_TYPENAME = TOKEN_FROM_ID(359, KeywordTokenType), Chris@16: T_UNION = TOKEN_FROM_ID(360, KeywordTokenType), Chris@16: T_UNSIGNED = TOKEN_FROM_ID(361, KeywordTokenType), Chris@16: T_USING = TOKEN_FROM_ID(362, KeywordTokenType), Chris@16: T_VIRTUAL = TOKEN_FROM_ID(363, KeywordTokenType), Chris@16: T_VOID = TOKEN_FROM_ID(364, KeywordTokenType), Chris@16: T_VOLATILE = TOKEN_FROM_ID(365, KeywordTokenType), Chris@16: T_WCHART = TOKEN_FROM_ID(366, KeywordTokenType), Chris@16: T_WHILE = TOKEN_FROM_ID(367, KeywordTokenType), Chris@16: T_PP_DEFINE = TOKEN_FROM_ID(368, PPTokenType), Chris@16: T_PP_IF = TOKEN_FROM_ID(369, PPConditionalTokenType), Chris@16: T_PP_IFDEF = TOKEN_FROM_ID(370, PPConditionalTokenType), Chris@16: T_PP_IFNDEF = TOKEN_FROM_ID(371, PPConditionalTokenType), Chris@16: T_PP_ELSE = TOKEN_FROM_ID(372, PPConditionalTokenType), Chris@16: T_PP_ELIF = TOKEN_FROM_ID(373, PPConditionalTokenType), Chris@16: T_PP_ENDIF = TOKEN_FROM_ID(374, PPConditionalTokenType), Chris@16: T_PP_ERROR = TOKEN_FROM_ID(375, PPTokenType), Chris@16: T_PP_LINE = TOKEN_FROM_ID(376, PPTokenType), Chris@16: T_PP_PRAGMA = TOKEN_FROM_ID(377, PPTokenType), Chris@16: T_PP_UNDEF = TOKEN_FROM_ID(378, PPTokenType), Chris@16: T_PP_WARNING = TOKEN_FROM_ID(379, PPTokenType), Chris@16: T_IDENTIFIER = TOKEN_FROM_ID(380, IdentifierTokenType), Chris@16: T_OCTALINT = TOKEN_FROM_ID(381, IntegerLiteralTokenType), Chris@16: T_DECIMALINT = TOKEN_FROM_ID(382, IntegerLiteralTokenType), Chris@16: T_HEXAINT = TOKEN_FROM_ID(383, IntegerLiteralTokenType), Chris@16: T_INTLIT = TOKEN_FROM_ID(384, IntegerLiteralTokenType), Chris@16: T_LONGINTLIT = TOKEN_FROM_ID(385, IntegerLiteralTokenType), Chris@16: T_FLOATLIT = TOKEN_FROM_ID(386, FloatingLiteralTokenType), Chris@16: T_FIXEDPOINTLIT = TOKEN_FROM_ID(386, FloatingLiteralTokenType|AltTokenType), // IDL specific Chris@16: T_CCOMMENT = TOKEN_FROM_ID(387, WhiteSpaceTokenType|AltTokenType), Chris@16: T_CPPCOMMENT = TOKEN_FROM_ID(388, WhiteSpaceTokenType|AltTokenType), Chris@16: T_CHARLIT = TOKEN_FROM_ID(389, CharacterLiteralTokenType), Chris@16: T_STRINGLIT = TOKEN_FROM_ID(390, StringLiteralTokenType), Chris@16: T_CONTLINE = TOKEN_FROM_ID(391, EOLTokenType), Chris@16: T_SPACE = TOKEN_FROM_ID(392, WhiteSpaceTokenType), Chris@16: T_SPACE2 = TOKEN_FROM_ID(393, WhiteSpaceTokenType), Chris@16: T_NEWLINE = TOKEN_FROM_ID(394, EOLTokenType), Chris@16: T_GENERATEDNEWLINE = TOKEN_FROM_ID(394, EOLTokenType|AltTokenType), Chris@16: T_POUND_POUND = TOKEN_FROM_ID(395, OperatorTokenType), Chris@16: T_POUND_POUND_ALT = TOKEN_FROM_ID(395, OperatorTokenType|AltTokenType), Chris@16: T_POUND_POUND_TRIGRAPH = TOKEN_FROM_ID(395, OperatorTokenType|TriGraphTokenType), Chris@16: T_POUND = TOKEN_FROM_ID(396, OperatorTokenType), Chris@16: T_POUND_ALT = TOKEN_FROM_ID(396, OperatorTokenType|AltTokenType), Chris@16: T_POUND_TRIGRAPH = TOKEN_FROM_ID(396, OperatorTokenType|TriGraphTokenType), Chris@16: T_ANY = TOKEN_FROM_ID(397, UnknownTokenType), Chris@16: T_ANY_TRIGRAPH = TOKEN_FROM_ID(397, UnknownTokenType|TriGraphTokenType), Chris@16: T_PP_INCLUDE = TOKEN_FROM_ID(398, PPTokenType), Chris@16: T_PP_QHEADER = TOKEN_FROM_ID(399, PPTokenType), Chris@16: T_PP_HHEADER = TOKEN_FROM_ID(400, PPTokenType), Chris@16: T_PP_INCLUDE_NEXT = TOKEN_FROM_ID(398, PPTokenType|AltTokenType), Chris@16: T_PP_QHEADER_NEXT = TOKEN_FROM_ID(399, PPTokenType|AltTokenType), Chris@16: T_PP_HHEADER_NEXT = TOKEN_FROM_ID(400, PPTokenType|AltTokenType), Chris@16: T_EOF = TOKEN_FROM_ID(401, EOFTokenType), // end of file reached Chris@16: T_EOI = TOKEN_FROM_ID(402, EOFTokenType), // end of input reached Chris@16: T_PP_NUMBER = TOKEN_FROM_ID(403, InternalTokenType), Chris@16: Chris@16: // MS extensions Chris@16: T_MSEXT_INT8 = TOKEN_FROM_ID(404, KeywordTokenType), Chris@16: T_MSEXT_INT16 = TOKEN_FROM_ID(405, KeywordTokenType), Chris@16: T_MSEXT_INT32 = TOKEN_FROM_ID(406, KeywordTokenType), Chris@16: T_MSEXT_INT64 = TOKEN_FROM_ID(407, KeywordTokenType), Chris@16: T_MSEXT_BASED = TOKEN_FROM_ID(408, KeywordTokenType), Chris@16: T_MSEXT_DECLSPEC = TOKEN_FROM_ID(409, KeywordTokenType), Chris@16: T_MSEXT_CDECL = TOKEN_FROM_ID(410, KeywordTokenType), Chris@16: T_MSEXT_FASTCALL = TOKEN_FROM_ID(411, KeywordTokenType), Chris@16: T_MSEXT_STDCALL = TOKEN_FROM_ID(412, KeywordTokenType), Chris@16: T_MSEXT_TRY = TOKEN_FROM_ID(413, KeywordTokenType), Chris@16: T_MSEXT_EXCEPT = TOKEN_FROM_ID(414, KeywordTokenType), Chris@16: T_MSEXT_FINALLY = TOKEN_FROM_ID(415, KeywordTokenType), Chris@16: T_MSEXT_LEAVE = TOKEN_FROM_ID(416, KeywordTokenType), Chris@16: T_MSEXT_INLINE = TOKEN_FROM_ID(417, KeywordTokenType), Chris@16: T_MSEXT_ASM = TOKEN_FROM_ID(418, KeywordTokenType), Chris@16: Chris@16: T_MSEXT_PP_REGION = TOKEN_FROM_ID(419, PPTokenType), Chris@16: T_MSEXT_PP_ENDREGION = TOKEN_FROM_ID(420, PPTokenType), Chris@16: Chris@16: // import is needed to be a keyword for the C++ module Standards proposal Chris@16: T_IMPORT = TOKEN_FROM_ID(421, KeywordTokenType), Chris@16: Chris@16: // C++11 keywords Chris@16: T_ALIGNAS = TOKEN_FROM_ID(422, KeywordTokenType), Chris@16: T_ALIGNOF = TOKEN_FROM_ID(423, KeywordTokenType), Chris@16: T_CHAR16_T = TOKEN_FROM_ID(424, KeywordTokenType), Chris@16: T_CHAR32_T = TOKEN_FROM_ID(425, KeywordTokenType), Chris@16: T_CONSTEXPR = TOKEN_FROM_ID(426, KeywordTokenType), Chris@16: T_DECLTYPE = TOKEN_FROM_ID(427, KeywordTokenType), Chris@16: T_NOEXCEPT = TOKEN_FROM_ID(428, KeywordTokenType), Chris@16: T_NULLPTR = TOKEN_FROM_ID(429, KeywordTokenType), Chris@16: T_STATICASSERT = TOKEN_FROM_ID(430, KeywordTokenType), Chris@16: T_THREADLOCAL = TOKEN_FROM_ID(431, KeywordTokenType), Chris@16: T_RAWSTRINGLIT = TOKEN_FROM_ID(432, StringLiteralTokenType), Chris@16: Chris@16: T_LAST_TOKEN_ID, Chris@16: T_LAST_TOKEN = ID_FROM_TOKEN(T_LAST_TOKEN_ID & ~PPTokenFlag), Chris@16: Chris@16: // pseudo tokens to help streamlining macro replacement, these should not Chris@16: // returned from the lexer nor should these be returned from the pp-iterator Chris@16: T_NONREPLACABLE_IDENTIFIER = TOKEN_FROM_ID(T_LAST_TOKEN+1, IdentifierTokenType), Chris@16: T_PLACEHOLDER = TOKEN_FROM_ID(T_LAST_TOKEN+2, WhiteSpaceTokenType), Chris@16: T_PLACEMARKER = TOKEN_FROM_ID(T_LAST_TOKEN+3, InternalTokenType), Chris@16: T_PARAMETERBASE = TOKEN_FROM_ID(T_LAST_TOKEN+4, ParameterTokenType), Chris@16: T_EXTPARAMETERBASE = TOKEN_FROM_ID(T_LAST_TOKEN+4, ExtParameterTokenType) Chris@16: }; Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // redefine the TOKEN_FROM_ID macro to be more type safe Chris@16: #undef TOKEN_FROM_ID Chris@16: #define TOKEN_FROM_ID(id, cat) boost::wave::token_id((id) | (cat)) Chris@16: Chris@16: #undef ID_FROM_TOKEN Chris@16: #define ID_FROM_TOKEN(tok) \ Chris@16: boost::wave::token_id((tok) & \ Chris@16: ~(boost::wave::TokenTypeMask|boost::wave::PPTokenFlag)) \ Chris@16: /**/ Chris@16: Chris@16: #undef BASEID_FROM_TOKEN Chris@16: #define BASEID_FROM_TOKEN(tok) \ Chris@16: boost::wave::token_id((tok) & \ Chris@16: ~(boost::wave::ExtTokenTypeMask|boost::wave::PPTokenFlag)) \ Chris@16: /**/ Chris@16: #define BASE_TOKEN(tok) \ Chris@16: boost::wave::token_id((tok) & boost::wave::MainTokenMask) \ Chris@16: /**/ Chris@16: #define CATEGORY_FROM_TOKEN(tok) ((tok) & boost::wave::TokenTypeMask) Chris@16: #define EXTCATEGORY_FROM_TOKEN(tok) ((tok) & boost::wave::ExtTokenTypeMask) Chris@16: #define IS_CATEGORY(tok, cat) \ Chris@16: ((CATEGORY_FROM_TOKEN(tok) == CATEGORY_FROM_TOKEN(cat)) ? true : false) \ Chris@16: /**/ Chris@16: #define IS_EXTCATEGORY(tok, cat) \ Chris@16: ((EXTCATEGORY_FROM_TOKEN(tok) == EXTCATEGORY_FROM_TOKEN(cat)) ? true : false) \ Chris@16: /**/ Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // verify whether the given token(-id) represents a valid pp_token Chris@16: inline bool is_pp_token(boost::wave::token_id id) Chris@16: { Chris@16: return (id & boost::wave::PPTokenFlag) ? true : false; Chris@16: } Chris@16: Chris@16: template Chris@16: inline bool is_pp_token(TokenT const& tok) Chris@16: { Chris@16: return is_pp_token(boost::wave::token_id(tok)); Chris@16: } Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // return a token name Chris@16: BOOST_WAVE_DECL Chris@16: BOOST_WAVE_STRINGTYPE get_token_name(token_id tokid); Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: // return a token name Chris@16: BOOST_WAVE_DECL Chris@16: char const *get_token_value(token_id tokid); Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: } // namespace wave Chris@16: } // namespace boost Chris@16: Chris@16: #endif // #if !defined(BOOST_WAVE_TOKEN_IDS_DEFINED) Chris@16: Chris@16: // the suffix header occurs after all of the code Chris@16: #ifdef BOOST_HAS_ABI_HEADERS Chris@16: #include BOOST_ABI_SUFFIX Chris@16: #endif Chris@16: Chris@16: #endif // !defined(TOKEN_IDS_HPP_414E9A58_F079_4789_8AFF_513815CE475B_INCLUDED) Chris@16: