diff options
Diffstat (limited to 'sources/shiboken6/generator/shiboken/headergenerator.h')
-rw-r--r-- | sources/shiboken6/generator/shiboken/headergenerator.h | 54 |
1 files changed, 37 insertions, 17 deletions
diff --git a/sources/shiboken6/generator/shiboken/headergenerator.h b/sources/shiboken6/generator/shiboken/headergenerator.h index a02cc5235..03b98e743 100644 --- a/sources/shiboken6/generator/shiboken/headergenerator.h +++ b/sources/shiboken6/generator/shiboken/headergenerator.h @@ -6,10 +6,14 @@ #include "shibokengenerator.h" #include "include.h" +#include "modifications_typedefs.h" +#include <QtCore/QList> #include <QtCore/QSet> +struct IndexValue; class AbstractMetaFunction; +struct ModuleHeaderParameters; /** * The HeaderGenerator generate the declarations of C++ bindings classes. @@ -17,11 +21,9 @@ class AbstractMetaFunction; class HeaderGenerator : public ShibokenGenerator { public: - OptionDescriptions options() const override { return OptionDescriptions(); } - const char *name() const override { return "Header generator"; } - static QString headerFileNameForContext(const GeneratorContext &context); + static const char *protectedHackDefine; protected: QString fileNameForContext(const GeneratorContext &context) const override; @@ -29,26 +31,44 @@ protected: bool finishGeneration() override; private: - void writeCopyCtor(TextStream &s, const AbstractMetaClass *metaClass) const; - void writeFunction(TextStream &s, const AbstractMetaFunctionCPtr &func, - FunctionGeneration generation); - void writeSbkTypeFunction(TextStream &s, const AbstractMetaEnum &cppEnum) const; - static void writeSbkTypeFunction(TextStream &s, const AbstractMetaClass *cppClass) ; - static void writeSbkTypeFunction(TextStream &s, const AbstractMetaType &metaType) ; - void writeTypeIndexValueLine(TextStream &s, const ApiExtractorResult &api, - const TypeEntry *typeEntry); - void writeTypeIndexValueLines(TextStream &s, const ApiExtractorResult &api, - const AbstractMetaClass *metaClass); - void writeProtectedEnumSurrogate(TextStream &s, const AbstractMetaEnum &cppEnum) const; + using InheritedOverloadSet = QSet<AbstractMetaFunctionCPtr>; + using IndexValues = QList<IndexValue>; + + IndexValues collectTypeIndexes(const AbstractMetaClassCList &classList); + IndexValues collectConverterIndexes() const; + + static void writeCopyCtor(TextStream &s, const AbstractMetaClassCPtr &metaClass); + void writeFunction(TextStream &s, + const AbstractMetaFunctionCPtr &func, + InheritedOverloadSet *inheritedOverloads, + FunctionGeneration generation) const; + static void writeSbkTypeFunction(TextStream &s, const AbstractMetaEnum &cppEnum); + static void writeSbkTypeFunction(TextStream &s, const AbstractMetaClassCPtr &cppClass); + static void writeSbkTypeFunction(TextStream &s, const AbstractMetaType &metaType); + void collectTypeEntryTypeIndexes(const ApiExtractorResult &api, + const TypeEntryCPtr &typeEntry, + IndexValues *indexValues); + void collectClassTypeIndexes(const ApiExtractorResult &api, + const AbstractMetaClassCPtr &metaClass, + IndexValues *indexValues); + static void writeProtectedEnumSurrogate(TextStream &s, const AbstractMetaEnum &cppEnum); void writeMemberFunctionWrapper(TextStream &s, const AbstractMetaFunctionCPtr &func, const QString &postfix = {}) const; void writePrivateHeader(const QString &moduleHeaderDir, const QString &publicIncludeShield, - const QSet<Include> &privateIncludes, - const QString &privateTypeFunctions); + const ModuleHeaderParameters ¶meters); + static void writeTypeFunctions(TextStream &s, const QString &typeFunctions); + void writeWrapperClassDeclaration(TextStream &s, + const QString &wrapperName, + const GeneratorContext &classContext) const; + void writeWrapperClass(TextStream &s, const QString &wrapperName, const GeneratorContext &classContext) const; + void writeInheritedWrapperClassDeclaration(TextStream &s, + const GeneratorContext &classContext) const; + void writeModuleCodeSnips(TextStream &s, const CodeSnipList &codeSnips, + TypeSystem::CodeSnipPosition position, + TypeSystem::Language language) const; - QSet<AbstractMetaFunctionCPtr> m_inheritedOverloads; AbstractMetaClassCList m_alternateTemplateIndexes; }; |