// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #ifndef GENERATOR_H #define GENERATOR_H #include "moc.h" QT_BEGIN_NAMESPACE class Generator { Moc *parser = nullptr; FILE *out; ClassDef *cdef; QList meta_data; public: Generator(Moc *moc, ClassDef *classDef, const QList &metaTypes, const QHash &knownQObjectClasses, const QHash &knownGadgets, FILE *outfile = nullptr, bool requireCompleteTypes = false); void generateCode(); qsizetype registeredStringsCount() { return strings.size(); } private: bool registerableMetaType(const QByteArray &propertyType); void registerClassInfoStrings(); void registerFunctionStrings(const QList &list); void registerByteArrayVector(const QList &list); void addStrings(const QByteArrayList &strings); void addProperties(); void addEnums(); void addFunctions(const QList &list, const char *functype); void addClassInfos(); void generateTypeInfo(const QByteArray &typeName, bool allowEmptyName = false); void registerEnumStrings(); void registerPropertyStrings(); void generateMetacall(); void generateStaticMetacall(); void generateSignal(const FunctionDef *def, int index); void generatePluginMetaData(); QMultiMap automaticPropertyMetaTypesHelper(); QMap> methodsWithAutomaticTypesHelper(const QList &methodList); void strreg(const QByteArray &); // registers a string int stridx(const QByteArray &); // returns a string's id QList strings; QByteArray purestSuperClass; QList metaTypes; QHash knownQObjectClasses; QHash knownGadgets; bool requireCompleteTypes; }; QT_END_NAMESPACE #endif // GENERATOR_H