]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | /*============================================================================= |
2 | Boost.Wave: A Standard compliant C++ preprocessor library | |
b32b8144 | 3 | The definition of a default set of token identifiers and related |
7c673cae FG |
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 | ||
b32b8144 | 30 | #if (defined (__FreeBSD__) || defined (__DragonFly__) || defined (__OpenBSD__)) && defined (T_DIVIDE) |
7c673cae FG |
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 | /////////////////////////////////////////////////////////////////////////////// | |
b32b8144 | 45 | // the token_category helps to classify the different token types |
7c673cae | 46 | enum token_category { |
b32b8144 FG |
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 | |
7c673cae FG |
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 | ||
b32b8144 FG |
306 | T_UNKNOWN_UNIVERSALCHAR = TOKEN_FROM_ID('\\', UnknownTokenType), |
307 | ||
308 | // pseudo tokens to help streamlining macro replacement, these should not | |
7c673cae FG |
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 | inline bool is_pp_token(boost::wave::token_id id) | |
348 | { | |
349 | return (id & boost::wave::PPTokenFlag) ? true : false; | |
350 | } | |
351 | ||
352 | template <typename TokenT> | |
353 | inline bool is_pp_token(TokenT const& tok) | |
354 | { | |
355 | return is_pp_token(boost::wave::token_id(tok)); | |
356 | } | |
357 | ||
358 | /////////////////////////////////////////////////////////////////////////////// | |
359 | // return a token name | |
b32b8144 | 360 | BOOST_WAVE_DECL |
7c673cae FG |
361 | BOOST_WAVE_STRINGTYPE get_token_name(token_id tokid); |
362 | ||
363 | /////////////////////////////////////////////////////////////////////////////// | |
364 | // return a token name | |
b32b8144 | 365 | BOOST_WAVE_DECL |
7c673cae FG |
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 |