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