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
9// -- QtScxml
10#include <QtCore/qhash.h>
11#include <QtCore/qlist.h>
12#include <QtCore/qiodevice.h>
13// -- QtScxml
14
15QT_BEGIN_NAMESPACE
16
17class Generator
18{
19 QIODevice &out; // -- QtScxml
20 ClassDef *cdef;
21 QList<uint> meta_data;
22
23public:
24 Generator(ClassDef *classDef, const QList<QByteArray> &metaTypes,
25 const QHash<QByteArray, QByteArray> &knownQObjectClasses,
26 const QHash<QByteArray, QByteArray> &knownGadgets,
27 QIODevice &outfile, // -- QtScxml
28 bool requireCompleteTypes = false);
29 void generateCode();
30 qsizetype registeredStringsCount() { return strings.size(); }
31
32// -- QtScxml
33 void generateAccessorDefs();
34 void generateSignalDefs();
35// -- QtScxml
36
37private:
38 bool registerableMetaType(const QByteArray &propertyType);
39 void registerClassInfoStrings();
40 void registerFunctionStrings(const QList<FunctionDef> &list);
41 void registerByteArrayVector(const QList<QByteArray> &list);
42 void addStrings(const QByteArrayList &strings);
43 void addProperties();
44 void addEnums();
45 void addFunctions(const QList<FunctionDef> &list, const char *functype);
46 void addClassInfos();
47 void generateTypeInfo(const QByteArray &typeName, bool allowEmptyName = false);
48 void registerEnumStrings();
49 void registerPropertyStrings();
50 void generateMetacall();
51 void generateStaticMetacall();
52 void generateSignal(const FunctionDef *def, int index);
53#if 0 // -- QtScxml
54 void generatePluginMetaData();
55#endif // -- QtScxml
56 QByteArray disambiguatedTypeName(const QByteArray &name);
57 QByteArray disambiguatedTypeName(const QByteArray &name, TypeTags tag);
58 QByteArray disambiguatedTypeNameForCast(const QByteArray &name);
59 QMultiMap<QByteArray, int> automaticPropertyMetaTypesHelper();
60 QMap<int, QMultiMap<QByteArray, int>>
61 methodsWithAutomaticTypesHelper(const QList<FunctionDef> &methodList);
62
63 void strreg(const QByteArray &); // registers a string
64 int stridx(const QByteArray &); // returns a string's id
65 QList<QByteArray> strings;
66 QByteArray purestSuperClass;
67 QList<QByteArray> metaTypes;
68 QHash<QByteArray, QByteArray> knownQObjectClasses;
69 QHash<QByteArray, QByteArray> knownGadgets;
70 bool requireCompleteTypes;
71};
72
73QT_END_NAMESPACE
74
75#endif // GENERATOR_H
76

source code of qtscxml/tools/qscxmlc/generator.h