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
qtmocconstants.h
Go to the documentation of this file.
1// Copyright (C) 2024 Intel Corporation.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QTMOCCONSTANTS_H
5#define QTMOCCONSTANTS_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists to be used by the code that
12// moc generates. This file will not change quickly, but it over the long term,
13// it will likely change or even be removed.
14//
15// We mean it.
16//
17
18#include <QtCore/qflags.h>
19#include <QtCore/qtconfigmacros.h>
20#include <QtCore/qtypes.h>
21
23
24namespace QtMocConstants {
25// revision 7 is Qt 5.0 everything lower is not supported
26// revision 8 is Qt 5.12: It adds the enum name to QMetaEnum
27// revision 9 is Qt 6.0: It adds the metatype of properties and methods
28// revision 10 is Qt 6.2: The metatype of the metaobject is stored in the metatypes array
29// and metamethods store a flag stating whether they are const
30// revision 11 is Qt 6.5: The metatype for void is stored in the metatypes array
31// revision 12 is Qt 6.6: It adds the metatype for enums
32// revision 13 is Qt 6.9: Adds support for 64-bit QFlags and moves the method revision
33enum { OutputRevision = 13 }; // Used by moc, qmetaobjectbuilder and qdbus
34
36 Invalid = 0x00000000,
37 Readable = 0x00000001,
38 Writable = 0x00000002,
39 Resettable = 0x00000004,
40 EnumOrFlag = 0x00000008,
41 Alias = 0x00000010,
42 // Reserved for future usage = 0x00000020,
43 StdCppSet = 0x00000100,
44 Constant = 0x00000400,
45 Final = 0x00000800,
46 Designable = 0x00001000,
47 Scriptable = 0x00004000,
48 Stored = 0x00010000,
49 User = 0x00100000,
50 Required = 0x01000000,
51 Bindable = 0x02000000,
52};
54
59 AccessMask = 0x03, // mask
60
62#if QT_VERSION >= QT_VERSION_CHECK(7, 0, 0)
63 MethodSlot = 0x04,
65#else
66 MethodSignal = 0x04,
67 MethodSlot = 0x08,
68#endif
71
73 MethodCloned = 0x20, // Used for methods with default arguments
76
77 MethodIsConst = 0x100, // no use case for volatile so far
78};
79
81 DynamicMetaObject = 0x01, // is derived from QAbstractDynamicMetaObject
83 PropertyAccessInStaticMetaCall = 0x04, // since Qt 5.5, property code is in the static metacall
84 AllocatedMetaObject = 0x08, // meta object was allocated in dynamic memory (and may be freed)
85};
86
88 IsUnresolvedType = 0x80000000,
89 TypeNameIndexMask = 0x7FFFFFFF,
90 IsUnresolvedSignal = 0x70000000,
91};
92
97};
98
99} // namespace QtMocConstants
100
101QT_END_NAMESPACE
102
103#endif // QTMOCCONSTANTS_H
Definition moc.h:223
bool testFunctionAttribute(Token tok, FunctionDef *def)
Definition moc.cpp:355
void parseEnumOrFlag(BaseDef *def, QtMocConstants::EnumFlags flags)
Definition moc.cpp:1651
void checkSuperClasses(ClassDef *def)
Definition moc.cpp:1919
Moc()
Definition moc.h:227
void parse()
Definition moc.cpp:677
bool parseEnum(EnumDef *def, ClassDef *containingClass)
Definition moc.cpp:246
void parseProperty(ClassDef *def, PropertyMode mode)
Definition moc.cpp:1546
QByteArray lexemUntil(Token)
Definition moc.cpp:1819
EncounteredQmlMacro parseClassInfo(BaseDef *def)
Definition moc.cpp:1690
bool until(Token)
Definition moc.cpp:1839
QList< QByteArray > includeFiles
Definition moc.h:237
bool requireCompleteTypes
Definition moc.h:235
QHash< QByteArray, QByteArray > knownQObjectClasses
Definition moc.h:242
void createPropertyDef(PropertyDef &def, int propertyIndex, PropertyMode mode)
Definition moc.cpp:1370
void parseClassInfo(ClassDef *def)
Definition moc.cpp:1717
QByteArrayView strippedFileName() const
Definition moc.cpp:1113
bool parseClassHead(ClassDef *def)
Definition moc.cpp:39
void parsePrivateProperty(ClassDef *def, PropertyMode mode)
Definition moc.cpp:1638
QByteArray includePath
Definition moc.h:236
QByteArray filename
Definition moc.h:231
void parseFlag(BaseDef *def)
Definition moc.cpp:1666
void parseSignals(ClassDef *def)
Definition moc.cpp:1326
void parseDeclareMetatype()
Definition moc.cpp:1779
void parsePropertyAttributes(PropertyDef &propDef)
Definition moc.cpp:1409
void parseInterfaces(ClassDef *def)
Definition moc.cpp:1723
bool testFunctionRevision(FunctionDef *def)
Definition moc.cpp:418
bool testFunctionAttribute(FunctionDef *def)
Definition moc.cpp:346
void prependNamespaces(BaseDef &def, const QList< NamespaceDef > &namespaceList) const
Definition moc.cpp:631
QHash< QByteArray, QByteArray > knownGadgets
Definition moc.h:243
QList< QByteArray > metaTypes
Definition moc.h:240
bool parseFunction(FunctionDef *def, bool inMacro=false)
Definition moc.cpp:430
QByteArray parsePropertyAccessor()
Definition moc.cpp:1620
QMap< QString, QJsonArray > metaArgs
Definition moc.h:244
bool testForFunctionModifiers(FunctionDef *def)
Definition moc.cpp:534
const QByteArray & toFullyQualified(const QByteArray &name) const noexcept
Definition moc.cpp:30
void parseSlots(ClassDef *def, FunctionDef::Access access)
Definition moc.cpp:1284
void parseDeclareInterface()
Definition moc.cpp:1756
void checkListSizes(const ClassDef &def)
Definition moc.cpp:641
QTypeRevision parseRevision()
Definition moc.cpp:387
void parseMocInclude()
Definition moc.cpp:1788
QList< QString > parsedPluginMetadataFiles
Definition moc.h:245
bool skipCxxAttributes()
Definition moc.cpp:378
PropertyMode
Definition moc.h:225
@ Anonymous
Definition moc.h:225
@ Named
Definition moc.h:225
bool mustIncludeQPluginH
Definition moc.h:234
bool parseMaybeFunction(const ClassDef *cdef, FunctionDef *def)
Definition moc.cpp:542
void checkProperties(ClassDef *cdef)
Definition moc.cpp:1977
Type parseType()
Definition moc.cpp:126
void parseFunctionArguments(FunctionDef *def)
Definition moc.cpp:306
void parseSlotInPrivate(ClassDef *def, FunctionDef::Access access)
Definition moc.cpp:1798
bool inClass(const ClassDef *def) const
Definition moc.h:252
void parsePluginData(ClassDef *def)
Definition moc.cpp:1556
void generate(FILE *out, FILE *jsonOutput)
Definition moc.cpp:1190
QMap< QByteArray, QByteArray > interface2IdMap
Definition moc.h:239
bool noInclude
Definition moc.h:233
EncounteredQmlMacro
Definition moc.h:281
bool inNamespace(const NamespaceDef *def) const
Definition moc.h:256
QList< ClassDef > classList
Definition moc.h:238
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
Definition qmap.h:189
\inmodule QtCore
QByteArray unquotedLexem()
Definition symbols.h:105
const Symbol & symbol() const
Definition symbols.h:102
Token token()
Definition symbols.h:103
bool dontReplaceSymbol(const QByteArray &name) const
Definition symbols.h:125
bool hasNext()
Definition symbols.h:89
QByteArray lexem() const
Definition symbols.h:104
Token next()
Definition symbols.h:94
const SafeSymbols & constTop() const
Definition symbols.h:88
bool test(Token)
Definition symbols.h:111
Q_DECLARE_TYPEINFO(EnumDef, Q_RELOCATABLE_TYPE)
QByteArray noRef(const QByteArray &type)
Definition moc.h:313
Q_DECLARE_TYPEINFO(PropertyDef, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(NamespaceDef, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(ClassDef, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(ClassInfoDef, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(ClassDef::Interface, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(SuperClass, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(ArgumentDef, Q_RELOCATABLE_TYPE)
TypeTag
Definition moc.h:23
@ HasEnum
Definition moc.h:27
@ HasClass
Definition moc.h:26
@ None
Definition moc.h:24
@ HasStruct
Definition moc.h:25
Q_DECLARE_TYPEINFO(PrivateQPropertyDef, Q_RELOCATABLE_TYPE)
Q_DECLARE_TYPEINFO(FunctionDef, Q_RELOCATABLE_TYPE)
constexpr PropertyFlags DefaultPropertyFlags
QHash< MacroName, Macro > Macros
SubArray MacroName
Q_DECLARE_TYPEINFO(QObjectPrivate::ConnectionList, Q_RELOCATABLE_TYPE)
#define qPrintable(string)
Definition qstring.h:1685
#define QStringLiteral(str)
Definition qstring.h:1826
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
int main(int argc, char *argv[])
[ctor_close]
QByteArray rightType
Definition moc.h:69
QByteArray normalizedType
Definition moc.h:69
QJsonObject toJson() const
Definition moc.cpp:2182
QByteArray name
Definition moc.h:69
ArgumentDef()
Definition moc.h:67
bool isDefault
Definition moc.h:70
Type type
Definition moc.h:68
Definition moc.h:160
qsizetype end
Definition moc.h:168
qsizetype begin
Definition moc.h:167
QMap< QByteArray, QByteArray > flagAliases
Definition moc.h:166
QByteArray qualified
Definition moc.h:162
qsizetype lineNumber
Definition moc.h:169
QByteArray classname
Definition moc.h:161
QList< ClassInfoDef > classInfoList
Definition moc.h:163
QList< EnumDef > enumList
Definition moc.h:165
Interface(const QByteArray &_className)
Definition moc.h:185
QByteArray className
Definition moc.h:187
QByteArray interfaceId
Definition moc.h:188
QMap< QString, QJsonArray > metaArgs
Definition moc.h:195
QJsonDocument metaData
Definition moc.h:196
QByteArray uri
Definition moc.h:194
QByteArray iid
Definition moc.h:193
bool hasQObject
Definition moc.h:206
QList< QList< Interface > > interfaceList
Definition moc.h:190
QList< FunctionDef > publicList
Definition moc.h:200
QList< FunctionDef > methodList
Definition moc.h:200
QList< PropertyDef > propertyList
Definition moc.h:202
QList< FunctionDef > constructorList
Definition moc.h:199
bool hasQGadget
Definition moc.h:207
QList< SuperClass > superclassList
Definition moc.h:180
bool requireCompleteMethodTypes
Definition moc.h:209
bool hasQNamespace
Definition moc.h:208
QList< FunctionDef > slotList
Definition moc.h:200
QList< FunctionDef > signalList
Definition moc.h:200
int revisionedMethods
Definition moc.h:204
QJsonObject toJson() const
Definition moc.cpp:2052
QList< QByteArray > nonClassSignalList
Definition moc.h:201
QByteArray name
Definition moc.h:155
QByteArray value
Definition moc.h:156
Definition moc.h:53
QByteArray enumName
Definition moc.h:55
QFlags< QtMocConstants::EnumFlags > flags
Definition moc.h:58
QByteArray qualifiedType(const ClassDef *cdef) const
Definition moc.cpp:2259
QJsonObject toJson(const ClassDef &cdef) const
Definition moc.cpp:2237
QList< QByteArray > values
Definition moc.h:57
QByteArray name
Definition moc.h:54
QByteArray type
Definition moc.h:56
int lineNumber
Definition moc.h:61
bool isVirtual
Definition moc.h:91
bool isScriptable
Definition moc.h:100
bool wasCloned
Definition moc.h:94
QByteArray normalizedType
Definition moc.h:80
QJsonObject toJson(int index) const
Definition moc.cpp:2143
bool isCompat
Definition moc.h:98
bool inlineCode
Definition moc.h:93
Type type
Definition moc.h:78
bool isRawSlot
Definition moc.h:107
static void accessToJson(QJsonObject *obj, Access acs)
Definition moc.cpp:2173
Access access
Definition moc.h:86
bool isSignal
Definition moc.h:102
bool isSlot
Definition moc.h:101
bool isInvokable
Definition moc.h:99
QByteArray name
Definition moc.h:82
QByteArray inPrivateClass
Definition moc.h:83
bool isConst
Definition moc.h:90
QList< ArgumentDef > arguments
Definition moc.h:79
int lineNumber
Definition moc.h:88
int revision
Definition moc.h:87
bool returnTypeIsVolatile
Definition moc.h:96
bool isAbstract
Definition moc.h:106
bool isPrivateSignal
Definition moc.h:103
bool isDestructor
Definition moc.h:105
@ Public
Definition moc.h:85
@ Protected
Definition moc.h:85
@ Private
Definition moc.h:85
bool isConstructor
Definition moc.h:104
bool isStatic
Definition moc.h:92
QByteArray tag
Definition moc.h:81
Simple structure used by the Doc and DocParser classes.
Symbols symbols
bool isVariadic
bool isFunction
Symbols arguments
bool doGenerate
Definition moc.h:218
bool hasQNamespace
Definition moc.h:217
QByteArray name
Definition moc.h:146
QByteArray storage
Definition moc.h:149
QByteArray accessor
Definition moc.h:148
QByteArray setter
Definition moc.h:147
QByteArray scriptable
Definition moc.h:125
QByteArray member
Definition moc.h:125
QByteArray notify
Definition moc.h:125
QByteArray write
Definition moc.h:125
int lineNumber
Definition moc.h:135
QByteArray inPrivateClass
Definition moc.h:125
int notifyId
Definition moc.h:126
bool final
Definition moc.h:132
QJsonObject toJson() const
Definition moc.cpp:2191
bool constant
Definition moc.h:131
Specification gspec
Definition moc.h:128
Specification
Definition moc.h:127
@ ReferenceSpec
Definition moc.h:127
@ ValueSpec
Definition moc.h:127
@ PointerSpec
Definition moc.h:127
bool stdCppSet() const
Definition moc.h:116
QByteArray user
Definition moc.h:125
TypeTags typeTag
Definition moc.h:130
QByteArray read
Definition moc.h:125
qsizetype location
Definition moc.h:137
int revision
Definition moc.h:129
QByteArray bind
Definition moc.h:125
int relativeIndex
Definition moc.h:134
QByteArray designable
Definition moc.h:125
bool required
Definition moc.h:133
QByteArray stored
Definition moc.h:125
QByteArray name
Definition moc.h:125
QByteArray reset
Definition moc.h:125
QByteArray type
Definition moc.h:125
qsizetype index
Definition symbols.h:81
Symbols symbols
Definition symbols.h:78
QByteArray expandedMacro
Definition symbols.h:79
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
QByteArray qualified
Definition moc.h:174
FunctionDef::Access access
Definition moc.h:175
QByteArray classname
Definition moc.h:173
qsizetype from
Definition symbols.h:70
QByteArrayView unquotedLexemView() const
Definition symbols.h:62
Symbol(int lineNum, Token token)
Definition symbols.h:48
operator SubArray() const
Definition symbols.h:64
QByteArrayView lexemView() const
Definition symbols.h:61
Token token
Definition symbols.h:58
void mergeStringLiteral(const Symbol &next)
bool operator==(const Symbol &o) const
Definition symbols.h:65
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:69
QByteArray unquotedLexem() const
Definition symbols.h:60
qsizetype len
Definition symbols.h:71
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:75
#define FOR_ALL_TOKENS(F)
Definition token.h:11
Token PP_Token
Definition token.h:252