Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
token.h
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
3
4#ifndef TOKEN_H
5#define TOKEN_H
6
7#include <QtCore/qglobal.h>
8
9QT_BEGIN_NAMESPACE
10
11#define FOR_ALL_TOKENS(F)
12 F(NOTOKEN)
13 F(IDENTIFIER)
14 F(INTEGER_LITERAL)
15 F(CHARACTER_LITERAL)
16 F(STRING_LITERAL)
17 F(BOOLEAN_LITERAL)
18 F(HEADER_NAME)
19 F(LANGLE)
20 F(RANGLE)
21 F(LPAREN)
22 F(RPAREN)
23 F(ELIPSIS)
24 F(LBRACK)
25 F(RBRACK)
26 F(LBRACE)
27 F(RBRACE)
28 F(EQ)
29 F(SCOPE)
30 F(SEMIC)
31 F(COLON)
32 F(DOTSTAR)
33 F(QUESTION)
34 F(DOT)
35 F(DYNAMIC_CAST)
36 F(STATIC_CAST)
37 F(REINTERPRET_CAST)
38 F(CONST_CAST)
39 F(TYPEID)
40 F(THIS)
41 F(TEMPLATE)
42 F(THROW)
43 F(TRY)
44 F(CATCH)
45 F(TYPEDEF)
46 F(FRIEND)
47 F(CLASS)
48 F(NAMESPACE)
49 F(ENUM)
50 F(STRUCT)
51 F(UNION)
52 F(VIRTUAL)
53 F(PRIVATE)
54 F(PROTECTED)
55 F(PUBLIC)
56 F(EXPORT)
57 F(AUTO)
58 F(REGISTER)
59 F(EXTERN)
60 F(MUTABLE)
61 F(ASM)
62 F(USING)
63 F(INLINE)
64 F(EXPLICIT)
65 F(STATIC)
66 F(CONST)
67 F(CONSTEXPR)
68 F(VOLATILE)
69 F(OPERATOR)
70 F(SIZEOF)
71 F(NEW)
72 F(DELETE)
73 F(PLUS)
74 F(MINUS)
75 F(STAR)
76 F(SLASH)
77 F(PERCENT)
78 F(HAT)
79 F(AND)
80 F(OR)
81 F(TILDE)
82 F(NOT)
83 F(PLUS_EQ)
84 F(MINUS_EQ)
85 F(STAR_EQ)
86 F(SLASH_EQ)
87 F(PERCENT_EQ)
88 F(HAT_EQ)
89 F(AND_EQ)
90 F(OR_EQ)
91 F(LTLT)
92 F(GTGT)
93 F(GTGT_EQ)
94 F(LTLT_EQ)
95 F(EQEQ)
96 F(NE)
97 F(LE)
98 F(GE)
99 F(ANDAND)
100 F(OROR)
101 F(INCR)
102 F(DECR)
103 F(COMMA)
104 F(ARROW_STAR)
105 F(ARROW)
106 F(CHAR)
107 F(WCHAR)
108 F(BOOL)
109 F(SHORT)
110 F(INT)
111 F(LONG)
112 F(SIGNED)
113 F(UNSIGNED)
114 F(FLOAT)
115 F(DOUBLE)
116 F(VOID)
117 F(CASE)
118 F(DEFAULT)
119 F(IF)
120 F(ELSE)
121 F(SWITCH)
122 F(WHILE)
123 F(DO)
124 F(FOR)
125 F(BREAK)
126 F(CONTINUE)
127 F(GOTO)
128 F(SIGNALS)
129 F(SLOTS)
130 F(RETURN)
131 F(Q_META_TOKEN_BEGIN)
132 F(Q_OBJECT_TOKEN)
133 F(Q_GADGET_TOKEN)
134 F(Q_GADGET_EXPORT_TOKEN)
135 F(Q_NAMESPACE_TOKEN)
136 F(Q_NAMESPACE_EXPORT_TOKEN)
137 F(Q_PROPERTY_TOKEN)
138 F(QT_ANONYMOUS_PROPERTY_TOKEN)
139 F(Q_PLUGIN_METADATA_TOKEN)
140 F(Q_ENUMS_TOKEN)
141 F(Q_ENUM_TOKEN)
142 F(Q_ENUM_NS_TOKEN)
143 F(Q_FLAGS_TOKEN)
144 F(Q_FLAG_TOKEN)
145 F(Q_FLAG_NS_TOKEN)
146 F(Q_DECLARE_INTERFACE_TOKEN)
147 F(Q_DECLARE_METATYPE_TOKEN)
148 F(Q_CLASSINFO_TOKEN)
149 F(Q_INTERFACES_TOKEN)
150 F(Q_SIGNALS_TOKEN)
151 F(Q_SLOTS_TOKEN)
152 F(Q_SIGNAL_TOKEN)
153 F(Q_SLOT_TOKEN)
154 F(Q_PRIVATE_SLOT_TOKEN)
155 F(Q_MOC_COMPAT_TOKEN)
156 F(Q_INVOKABLE_TOKEN)
157 F(Q_SCRIPTABLE_TOKEN)
158 F(Q_PRIVATE_PROPERTY_TOKEN)
159 F(QT_ANONYMOUS_PRIVATE_PROPERTY_TOKEN)
160 F(Q_REVISION_TOKEN)
161 F(Q_MOC_INCLUDE_TOKEN)
162 F(Q_META_TOKEN_END)
163 F(Q_DECLARE_FLAGS_TOKEN)
164 F(SPECIAL_TREATMENT_MARK)
165 F(MOC_INCLUDE_BEGIN)
166 F(MOC_INCLUDE_END)
167 F(CPP_COMMENT)
168 F(C_COMMENT)
169 F(FLOATING_LITERAL)
170 F(HASH)
171 F(QUOTE)
172 F(SINGLEQUOTE)
173 F(LANGLE_SCOPE)
174 F(DIGIT)
175 F(CHARACTER)
176 F(NEWLINE)
177 F(WHITESPACE)
178 F(BACKSLASH)
179 F(INCOMPLETE)
180 F(PP_DEFINE)
181 F(PP_UNDEF)
182 F(PP_IF)
183 F(PP_IFDEF)
184 F(PP_IFNDEF)
185 F(PP_ELIF)
186 F(PP_ELSE)
187 F(PP_ENDIF)
188 F(PP_INCLUDE)
189 F(PP_HASHHASH)
190 F(PP_HASH)
191 F(PP_DEFINED)
192 F(PP_INCOMPLETE)
193 F(PP_MOC_TRUE)
194 F(PP_MOC_FALSE)
195
196
197enum Token {
198
199#define CREATE_ENUM_VALUE(Name) Name,
200 FOR_ALL_TOKENS(CREATE_ENUM_VALUE)
201#undef CREATE_ENUM_VALUE
202
203 // aliases
204 PP_AND = AND,
205 PP_ANDAND = ANDAND,
206 PP_BACKSLASH = BACKSLASH,
207 PP_CHARACTER = CHARACTER,
208 PP_CHARACTER_LITERAL = CHARACTER_LITERAL,
209 PP_COLON = COLON,
210 PP_COMMA = COMMA,
211 PP_CPP_COMMENT = CPP_COMMENT,
212 PP_C_COMMENT = C_COMMENT,
213 PP_DIGIT = DIGIT,
214 PP_EQEQ = EQEQ,
215 PP_FLOATING_LITERAL = FLOATING_LITERAL,
216 PP_GE = GE,
217 PP_GTGT = GTGT,
218 PP_HAT = HAT,
219 PP_IDENTIFIER = IDENTIFIER,
220 PP_INTEGER_LITERAL = INTEGER_LITERAL,
221 PP_LANGLE = LANGLE,
222 PP_LE = LE,
223 PP_LPAREN = LPAREN,
224 PP_LTLT = LTLT,
225 PP_MINUS = MINUS,
226 PP_NE = NE,
227 PP_NEWLINE = NEWLINE,
228 PP_NOTOKEN = NOTOKEN,
229 PP_NOT = NOT,
230 PP_OR = OR,
231 PP_OROR = OROR,
232 PP_PERCENT = PERCENT,
233 PP_PLUS = PLUS,
234 PP_QUESTION = QUESTION,
235 PP_QUOTE = QUOTE,
236 PP_RANGLE = RANGLE,
237 PP_RPAREN = RPAREN,
238 PP_SINGLEQUOTE = SINGLEQUOTE,
239 PP_SLASH = SLASH,
240 PP_STAR = STAR,
241 PP_STRING_LITERAL = STRING_LITERAL,
242 PP_TILDE = TILDE,
243 PP_WHITESPACE = WHITESPACE,
244};
245
246// for debugging only
247#if defined(DEBUG_MOC)
248const char *tokenTypeName(Token t);
249#endif
250
251typedef Token PP_Token;
252
253QT_END_NAMESPACE
254
255#endif // TOKEN_H
int main(int argc, char *argv[])
[2]
Definition buffer.cpp:77
Definition moc.h:220
void parse()
Definition moc.cpp:669
bool requireCompleteTypes
Definition moc.h:232
void generate(FILE *out, FILE *jsonOutput)
Definition moc.cpp:1179
bool noInclude
Definition moc.h:230
int evaluateCondition()
void setDebugIncludes(bool value)
void parseDefineArguments(Macro *m)
void skipUntilEndif()
QHash< QByteArray, QByteArray > nonlocalIncludePathResolutionCache
Symbols preprocessed(const QByteArray &filename, QFile *device)
void substituteUntilNewline(Symbols &substituted)
QList< QByteArray > frameworks
static bool preprocessOnly
static Symbols macroExpandIdentifier(Preprocessor *that, SymbolStack &symbols, int lineNum, QByteArray *macroName)
QByteArray resolveInclude(const QByteArray &filename, const QByteArray &relativeTo)
static Symbols tokenize(const QByteArray &input, int lineNum=1, TokenizeMode mode=TokenizeCpp)
static void macroExpand(Symbols *into, Preprocessor *that, const Symbols &toExpand, qsizetype &index, int lineNum, bool one, const QSet< QByteArray > &excludeSymbols=QSet< QByteArray >())
@ PreparePreprocessorStatement
@ TokenizePreprocessorStatement
The QCommandLineOption class defines a possible command-line option. \inmodule QtCore.
The QCommandLineParser class provides a means for handling the command line options.
Definition qlist.h:80
QByteArray unquotedLexem()
Definition symbols.h:101
const Symbol & symbol() const
Definition symbols.h:98
Token token()
Definition symbols.h:99
bool dontReplaceSymbol(const QByteArray &name) const
Definition symbols.h:121
bool hasNext()
Definition symbols.h:85
QByteArray lexem() const
Definition symbols.h:100
Token next()
Definition symbols.h:90
bool test(Token)
Definition symbols.h:107
Combined button and popup list for selecting options.
QHash< MacroName, Macro > Macros
SubArray MacroName
#define qPrintable(string)
Definition qstring.h:1666
static QByteArray combinePath(const QString &infile, const QString &outfile)
Definition main.cpp:40
static bool hasNext(const Symbols &symbols, int i)
Definition main.cpp:78
static const Symbol & next(const Symbols &symbols, int &i)
Definition main.cpp:81
int runMoc(int argc, char **argv)
Definition main.cpp:170
static auto openFileForWriting(const QString &name)
Definition main.cpp:62
void error(const char *msg="Invalid argument")
Definition main.cpp:56
static QStringList argumentsFromCommandLineAndFile(const QStringList &arguments, bool &hasOptionFiles)
Definition main.cpp:138
QByteArray composePreprocessorOutput(const Symbols &symbols)
Definition main.cpp:85
Simple structure used by the Doc and DocParser classes.
Symbols symbols
bool isVariadic
bool isFunction
Symbols arguments
qsizetype index
Definition symbols.h:78
Symbols symbols
Definition symbols.h:75
QByteArray expandedMacro
Definition symbols.h:76
QByteArray array
Definition symbols.h:26
SubArray(const char *s)
Definition symbols.h:21
qsizetype len
Definition symbols.h:28
bool operator==(const SubArray &other) const
Definition symbols.h:29
qsizetype from
Definition symbols.h:27
SubArray()=default
SubArray(const QByteArray &a)
Definition symbols.h:20
SubArray(const QByteArray &a, qsizetype from, qsizetype len)
Definition symbols.h:22
qsizetype from
Definition symbols.h:67
Symbol(int lineNum, Token token)
Definition symbols.h:48
operator SubArray() const
Definition symbols.h:61
Token token
Definition symbols.h:58
bool operator==(const Symbol &o) const
Definition symbols.h:62
int lineNum
Definition symbols.h:57
Symbol()=default
Symbol(int lineNum, Token token, const QByteArray &lexem, qsizetype from, qsizetype len)
Definition symbols.h:53
QByteArray lexem() const
Definition symbols.h:59
QByteArray lex
Definition symbols.h:66
QByteArray unquotedLexem() const
Definition symbols.h:60
qsizetype len
Definition symbols.h:68
Symbol(int lineNum, Token token, const QByteArray &lexem)
Definition symbols.h:49
size_t qHash(const SubArray &key, size_t seed=0)
Definition symbols.h:39
Q_DECLARE_TYPEINFO(Symbol, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(SafeSymbols, Q_RELOCATABLE_TYPE)
QList< Symbol > Symbols
Definition symbols.h:72
#define FOR_ALL_TOKENS(F)
Definition token.h:11
Token PP_Token
Definition token.h:251