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
generator.h
Go to the documentation of this file.
1// Copyright (C) 2016 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 GENERATOR_H
5#define GENERATOR_H
6
7#include "moc.h"
8
10
11class Generator
12{
13 Moc *parser = nullptr;
14 FILE *out;
15 const ClassDef *cdef;
16 QList<uint> meta_data;
17
18public:
19 Generator(Moc *moc, const ClassDef *classDef, const QList<QByteArray> &metaTypes,
20 const QHash<QByteArray, QByteArray> &knownQObjectClasses,
21 const QHash<QByteArray, QByteArray> &knownGadgets,
22 const QHash<QByteArray, QByteArray> &hashes,
23 FILE *outfile = nullptr, bool requireCompleteTypes = false);
24 void generateCode();
25 qsizetype registeredStringsCount() { return strings.size(); }
26
27private:
28 bool registerableMetaType(const QByteArray &propertyType);
29 void registerClassInfoStrings();
30 void registerFunctionStrings(const QList<FunctionDef> &list);
31 void registerByteArrayVector(const QList<QByteArray> &list);
32 void addStrings(const QByteArrayList &strings);
33 void addProperties();
34 void addEnums();
35 void addFunctions(const QList<FunctionDef> &list, const char *functype);
36 void addClassInfos();
37 void generateTypeInfo(const QByteArray &typeName, bool allowEmptyName = false);
38 void registerEnumStrings();
39 void registerPropertyStrings();
40 void generateMetacall();
41 void generateStaticMetacall();
42 void generateSignal(const FunctionDef *def, int index);
43 void generatePluginMetaData();
44 QByteArray disambiguatedTypeName(const QByteArray &name);
45 QByteArray disambiguatedTypeName(const QByteArray &name, TypeTags tag);
46 QByteArray disambiguatedTypeNameForCast(const QByteArray &name);
47 QMultiMap<QByteArray, int> automaticPropertyMetaTypesHelper();
48 QMap<int, QMultiMap<QByteArray, int>>
49 methodsWithAutomaticTypesHelper(const QList<FunctionDef> &methodList);
50
51 void strreg(const QByteArray &); // registers a string
52 int stridx(const QByteArray &); // returns a string's id
53 QList<QByteArray> strings;
54 QByteArray purestSuperClass;
55 QList<QByteArray> metaTypes;
56 QHash<QByteArray, QByteArray> knownQObjectClasses;
57 QHash<QByteArray, QByteArray> knownGadgets;
58 QHash<QByteArray, QByteArray> hashes;
59 bool requireCompleteTypes;
60};
61
62QT_END_NAMESPACE
63
64#endif // GENERATOR_H
void nextItem(const char *comment=nullptr)
Definition cbordevice.h:22
CborDevice(FILE *out)
Definition cbordevice.h:20
qsizetype registeredStringsCount()
Definition generator.h:25
Generator(Moc *moc, const ClassDef *classDef, const QList< QByteArray > &metaTypes, const QHash< QByteArray, QByteArray > &knownQObjectClasses, const QHash< QByteArray, QByteArray > &knownGadgets, const QHash< QByteArray, QByteArray > &hashes, FILE *outfile=nullptr, bool requireCompleteTypes=false)
Definition generator.cpp:81
void generateCode()
Definition moc.h:226
Definition qlist.h:81
TypeTag
Definition moc.h:23
@ HasEnum
Definition moc.h:27
@ HasClass
Definition moc.h:26
@ HasStruct
Definition moc.h:25
Combined button and popup list for selecting options.
static QByteArray generateQualifiedClassNameIdentifier(const QByteArray &identifier)
static bool qualifiedNameEquals(const QByteArray &qualifiedName, const QByteArray &name)
static const char * metaTypeEnumValueString(int type)
Definition generator.cpp:69
static void printStringWithIndentation(FILE *out, const QByteArray &s)
static qsizetype lengthOfEscapeSequence(const QByteArray &s, qsizetype i)
Definition generator.cpp:99
constexpr const char * cxxTypeTag(TypeTags t)
Definition generator.cpp:55
static bool isBuiltinType(const QByteArray &type)
Definition generator.cpp:49
static int nameToBuiltinType(const QByteArray &name)
Definition generator.cpp:29
bool hasQObject
Definition moc.h:208
bool hasQGadget
Definition moc.h:209
bool requireCompleteMethodTypes
Definition moc.h:211
bool hasQNamespace
Definition moc.h:210
bool wasCloned
Definition moc.h:94
bool isRawSlot
Definition moc.h:107
bool isConst
Definition moc.h:90
bool isAbstract
Definition moc.h:106
bool isPrivateSignal
Definition moc.h:103
@ Private
Definition moc.h:85
bool isStatic
Definition moc.h:92
int notifyId
Definition moc.h:126
bool constant
Definition moc.h:131
Specification gspec
Definition moc.h:128
@ ReferenceSpec
Definition moc.h:127
@ PointerSpec
Definition moc.h:127