// 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 { FILE *out; ClassDef *cdef; QList meta_data; public: Generator(ClassDef *classDef, const QList &metaTypes, const QHash &knownQObjectClasses, const QHash &knownGadgets, FILE *outfile = nullptr, bool requireCompleteTypes = false); void generateCode(); private: bool registerableMetaType(const QByteArray &propertyType); void registerClassInfoStrings(); void generateClassInfos(); void registerFunctionStrings(const QList &list); void registerByteArrayVector(const QList &list); void generateFunctions(const QList &list, const char *functype, int type, int ¶msIndex, int &initialMetatypeOffset); void generateFunctionRevisions(const QList &list, const char *functype); void generateFunctionParameters(const QList &list, const char *functype); void generateTypeInfo(const QByteArray &typeName, bool allowEmptyName = false); void registerEnumStrings(); void generateEnums(int index); void registerPropertyStrings(); void generateProperties(); void generateMetacall(); void generateStaticMetacall(); void generateSignal(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