diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-05-12 10:38:41 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-05-15 12:49:05 +0200 |
commit | 6762ddea99f65ebf4dfa704e5f8c3b3453832c0f (patch) | |
tree | 1867344501c66de874a6f22abef6b5164b9a8254 /sources | |
parent | c16caeb5cb0fbce4a552080d75166caf15374767 (diff) |
shiboken: Constify GeneratorContext
Pass around by const-ref and return a const pointer to the class.
In HeaderGenerator::generateClass(), make a copy of the context
passed in to prevent writing back via reference in the base
class loop.
Change-Id: I0338bd93b5a53c25ec18bc45b407ab67d8c7c91e
Reviewed-by: Christian Tismer <tismer@stackless.com>
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources')
8 files changed, 80 insertions, 77 deletions
diff --git a/sources/shiboken2/generator/generator.cpp b/sources/shiboken2/generator/generator.cpp index bd56b1824..e997ef687 100644 --- a/sources/shiboken2/generator/generator.cpp +++ b/sources/shiboken2/generator/generator.cpp @@ -408,9 +408,9 @@ void Generator::setOutputDirectory(const QString &outDir) m_d->outDir = outDir; } -bool Generator::generateFileForContext(GeneratorContext &context) +bool Generator::generateFileForContext(const GeneratorContext &context) { - AbstractMetaClass *cls = context.metaClass(); + const AbstractMetaClass *cls = context.metaClass(); if (!shouldGenerate(cls)) return true; diff --git a/sources/shiboken2/generator/generator.h b/sources/shiboken2/generator/generator.h index dde281f0e..136f0a5f0 100644 --- a/sources/shiboken2/generator/generator.h +++ b/sources/shiboken2/generator/generator.h @@ -148,7 +148,7 @@ private: class GeneratorContext { public: GeneratorContext() = default; - GeneratorContext(AbstractMetaClass *metaClass, + GeneratorContext(const AbstractMetaClass *metaClass, const AbstractMetaType *preciseType = nullptr, bool forSmartPointer = false) : m_metaClass(metaClass), @@ -156,12 +156,12 @@ public: m_forSmartPointer(forSmartPointer) {} - AbstractMetaClass *metaClass() const { return m_metaClass; } + const AbstractMetaClass *metaClass() const { return m_metaClass; } bool forSmartPointer() const { return m_forSmartPointer; } const AbstractMetaType *preciseType() const { return m_preciseClassType; } private: - AbstractMetaClass *m_metaClass = nullptr; + const AbstractMetaClass *m_metaClass = nullptr; const AbstractMetaType *m_preciseClassType = nullptr; bool m_forSmartPointer = false; }; @@ -295,7 +295,7 @@ protected: const AbstractMetaEnum *findAbstractMetaEnum(const AbstractMetaType *metaType) const; /// Generates a file for given AbstractMetaClass or AbstractMetaType (smart pointer case). - bool generateFileForContext(GeneratorContext &context); + bool generateFileForContext(const GeneratorContext &context); /// Returns the file base name for a smart pointer. QString getFileNameBaseForSmartPointer(const AbstractMetaType *smartPointerType, @@ -371,7 +371,7 @@ protected: * \return the file name used to write the binding code for the class */ virtual QString fileNameSuffix() const = 0; - virtual QString fileNameForContext(GeneratorContext &context) const = 0; + virtual QString fileNameForContext(const GeneratorContext &context) const = 0; virtual bool doSetup() = 0; @@ -382,7 +382,7 @@ protected: * \param s text stream to write the generated output * \param metaClass the class that should be generated */ - virtual void generateClass(QTextStream &s, GeneratorContext &classContext) = 0; + virtual void generateClass(QTextStream &s, const GeneratorContext &classContext) = 0; virtual bool finishGeneration() = 0; /** diff --git a/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp b/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp index 4fe6ecc7a..014cc948e 100644 --- a/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp +++ b/sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp @@ -1523,7 +1523,7 @@ bool QtDocGenerator::shouldGenerate(const AbstractMetaClass *cls) const && cls->typeEntry()->type() != TypeEntry::SmartPointerType; } -QString QtDocGenerator::fileNameForContext(GeneratorContext &context) const +QString QtDocGenerator::fileNameForContext(const GeneratorContext &context) const { const AbstractMetaClass *metaClass = context.metaClass(); if (!context.forSmartPointer()) { @@ -1611,9 +1611,9 @@ static bool extractBrief(Documentation *sourceDoc, Documentation *brief) return true; } -void QtDocGenerator::generateClass(QTextStream &s, GeneratorContext &classContext) +void QtDocGenerator::generateClass(QTextStream &s, const GeneratorContext &classContext) { - AbstractMetaClass *metaClass = classContext.metaClass(); + const AbstractMetaClass *metaClass = classContext.metaClass(); qCDebug(lcShibokenDoc).noquote().nospace() << "Generating Documentation for " << metaClass->fullName(); m_packages[metaClass->package()] << fileNameForContext(classContext); diff --git a/sources/shiboken2/generator/qtdoc/qtdocgenerator.h b/sources/shiboken2/generator/qtdoc/qtdocgenerator.h index 56cb9c4bb..e4067cc6f 100644 --- a/sources/shiboken2/generator/qtdoc/qtdocgenerator.h +++ b/sources/shiboken2/generator/qtdoc/qtdocgenerator.h @@ -238,8 +238,8 @@ public: protected: bool shouldGenerate(const AbstractMetaClass *) const override; QString fileNameSuffix() const override; - QString fileNameForContext(GeneratorContext &context) const override; - void generateClass(QTextStream &s, GeneratorContext &classContext) override; + QString fileNameForContext(const GeneratorContext &context) const override; + void generateClass(QTextStream &s, const GeneratorContext &classContext) override; bool finishGeneration() override; void writeFunctionArguments(QTextStream&, const AbstractMetaFunction*, Options) const override {} diff --git a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp index c74f4b0a7..801bc83ec 100644 --- a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp +++ b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp @@ -195,7 +195,7 @@ QString CppGenerator::fileNameSuffix() const return QLatin1String("_wrapper.cpp"); } -QString CppGenerator::fileNameForContext(GeneratorContext &context) const +QString CppGenerator::fileNameForContext(const GeneratorContext &context) const { const AbstractMetaClass *metaClass = context.metaClass(); if (!context.forSmartPointer()) { @@ -292,9 +292,9 @@ static inline bool canGenerateFieldSetter(const AbstractMetaField *field) \param s the output buffer \param metaClass the pointer to metaclass information */ -void CppGenerator::generateClass(QTextStream &s, GeneratorContext &classContext) +void CppGenerator::generateClass(QTextStream &s, const GeneratorContext &classContext) { - AbstractMetaClass *metaClass = classContext.metaClass(); + const AbstractMetaClass *metaClass = classContext.metaClass(); // write license comment s << licenseComment() << Qt::endl; @@ -1273,7 +1273,7 @@ void CppGenerator::writeEnumConverterFunctions(QTextStream &s, const TypeEntry * } void CppGenerator::writeConverterFunctions(QTextStream &s, const AbstractMetaClass *metaClass, - GeneratorContext &classContext) + const GeneratorContext &classContext) { s << "// Type conversion functions.\n\n"; @@ -1499,7 +1499,7 @@ void CppGenerator::writeCustomConverterFunctions(QTextStream &s, const CustomCon } void CppGenerator::writeConverterRegister(QTextStream &s, const AbstractMetaClass *metaClass, - GeneratorContext &classContext) + const GeneratorContext &classContext) { if (metaClass->isNamespace()) return; @@ -1626,7 +1626,7 @@ void CppGenerator::writeContainerConverterFunctions(QTextStream &s, const Abstra } void CppGenerator::writeMethodWrapperPreamble(QTextStream &s, OverloadData &overloadData, - GeneratorContext &context) + const GeneratorContext &context) { const AbstractMetaFunction *rfunc = overloadData.referenceFunction(); const AbstractMetaClass *ownerClass = rfunc->ownerClass(); @@ -1703,7 +1703,7 @@ void CppGenerator::writeMethodWrapperPreamble(QTextStream &s, OverloadData &over } void CppGenerator::writeConstructorWrapper(QTextStream &s, const AbstractMetaFunctionList &overloads, - GeneratorContext &classContext) + const GeneratorContext &classContext) { ErrorCode errorCode(-1); OverloadData overloadData(overloads, this); @@ -1863,7 +1863,7 @@ void CppGenerator::writeConstructorWrapper(QTextStream &s, const AbstractMetaFun } void CppGenerator::writeMethodWrapper(QTextStream &s, const AbstractMetaFunctionList &overloads, - GeneratorContext &classContext) + const GeneratorContext &classContext) { OverloadData overloadData(overloads, this); const AbstractMetaFunction *rfunc = overloadData.referenceFunction(); @@ -2074,7 +2074,7 @@ void CppGenerator::writeCppSelfConversion(QTextStream &s, const GeneratorContext } void CppGenerator::writeCppSelfDefinition(QTextStream &s, - GeneratorContext &context, + const GeneratorContext &context, bool hasStaticOverload, bool cppSelfAsReference) { @@ -2123,7 +2123,7 @@ void CppGenerator::writeCppSelfDefinition(QTextStream &s, void CppGenerator::writeCppSelfDefinition(QTextStream &s, const AbstractMetaFunction *func, - GeneratorContext &context, + const GeneratorContext &context, bool hasStaticOverload) { if (!func->ownerClass() || func->isConstructor()) @@ -2692,7 +2692,7 @@ void CppGenerator::writeOverloadedFunctionDecisorEngine(QTextStream &s, const Ov } void CppGenerator::writeFunctionCalls(QTextStream &s, const OverloadData &overloadData, - GeneratorContext &context) + const GeneratorContext &context) { const OverloadData::MetaFunctionList &overloads = overloadData.overloadsWithoutRepetition(); s << INDENT << "// Call function/method\n"; @@ -2727,7 +2727,7 @@ void CppGenerator::writeFunctionCalls(QTextStream &s, const OverloadData &overlo void CppGenerator::writeSingleFunctionCall(QTextStream &s, const OverloadData &overloadData, const AbstractMetaFunction *func, - GeneratorContext &context) + const GeneratorContext &context) { if (func->isDeprecated()) { s << INDENT << "Shiboken::warning(PyExc_DeprecationWarning, 1, \"Function: '" @@ -3170,7 +3170,7 @@ static QStringList defaultExceptionHandling() } void CppGenerator::writeMethodCall(QTextStream &s, const AbstractMetaFunction *func, - GeneratorContext &context, int maxArgs) + const GeneratorContext &context, int maxArgs) { s << INDENT << "// " << func->minimalSignature() << (func->isReverseOperator() ? " [reverse operator]": "") << Qt::endl; if (func->isConstructor()) { @@ -3891,7 +3891,7 @@ QTextStream &operator<<(QTextStream &str, const pyTypeSlotEntry &e) void CppGenerator::writeClassDefinition(QTextStream &s, const AbstractMetaClass *metaClass, - GeneratorContext &classContext) + const GeneratorContext &classContext) { QString tp_flags; QString tp_init; @@ -4075,7 +4075,7 @@ void CppGenerator::writeClassDefinition(QTextStream &s, void CppGenerator::writeMappingMethods(QTextStream &s, const AbstractMetaClass *metaClass, - GeneratorContext &context) + const GeneratorContext &context) { for (auto it = m_mappingProtocol.cbegin(), end = m_mappingProtocol.cend(); it != end; ++it) { const AbstractMetaFunction *func = metaClass->findFunction(it.key()); @@ -4099,7 +4099,7 @@ void CppGenerator::writeMappingMethods(QTextStream &s, void CppGenerator::writeSequenceMethods(QTextStream &s, const AbstractMetaClass *metaClass, - GeneratorContext &context) + const GeneratorContext &context) { bool injectedCode = false; @@ -4285,7 +4285,7 @@ void CppGenerator::writeTpClearFunction(QTextStream &s, const AbstractMetaClass s << "}\n"; } -void CppGenerator::writeCopyFunction(QTextStream &s, GeneratorContext &context) +void CppGenerator::writeCopyFunction(QTextStream &s, const GeneratorContext &context) { const AbstractMetaClass *metaClass = context.metaClass(); const QString className = chopType(cpythonTypeName(metaClass)); @@ -4308,7 +4308,7 @@ void CppGenerator::writeCopyFunction(QTextStream &s, GeneratorContext &context) void CppGenerator::writeGetterFunction(QTextStream &s, const AbstractMetaField *metaField, - GeneratorContext &context) + const GeneratorContext &context) { ErrorCode errorCode(QString::fromLatin1(NULL_PTR)); s << "static PyObject *" << cpythonGetterFunctionName(metaField) << "(PyObject *self, void *)\n"; @@ -4390,7 +4390,7 @@ void CppGenerator::writeGetterFunction(QTextStream &s, void CppGenerator::writeSetterFunction(QTextStream &s, const AbstractMetaField *metaField, - GeneratorContext &context) + const GeneratorContext &context) { ErrorCode errorCode(0); s << "static int " << cpythonSetterFunctionName(metaField) << "(PyObject *self, PyObject *pyIn, void *)\n"; @@ -4453,7 +4453,7 @@ void CppGenerator::writeSetterFunction(QTextStream &s, s << "}\n"; } -void CppGenerator::writeRichCompareFunction(QTextStream &s, GeneratorContext &context) +void CppGenerator::writeRichCompareFunction(QTextStream &s, const GeneratorContext &context) { const AbstractMetaClass *metaClass = context.metaClass(); QString baseName = cpythonBaseName(metaClass); @@ -4958,7 +4958,7 @@ QString CppGenerator::getSimpleClassInitFunctionName(const AbstractMetaClass *me return initFunctionName; } -QString CppGenerator::getInitFunctionName(GeneratorContext &context) const +QString CppGenerator::getInitFunctionName(const GeneratorContext &context) const { return !context.forSmartPointer() ? getSimpleClassInitFunctionName(context.metaClass()) @@ -4967,7 +4967,7 @@ QString CppGenerator::getInitFunctionName(GeneratorContext &context) const void CppGenerator::writeClassRegister(QTextStream &s, const AbstractMetaClass *metaClass, - GeneratorContext &classContext, + const GeneratorContext &classContext, QTextStream &signatureStream) { const ComplexTypeEntry *classTypeEntry = metaClass->typeEntry(); @@ -5175,7 +5175,7 @@ void CppGenerator::writeClassRegister(QTextStream &s, s << "}\n"; } -void CppGenerator::writeInitQtMetaTypeFunctionBody(QTextStream &s, GeneratorContext &context) const +void CppGenerator::writeInitQtMetaTypeFunctionBody(QTextStream &s, const GeneratorContext &context) const { const AbstractMetaClass *metaClass = context.metaClass(); // Gets all class name variants used on different possible scopes @@ -5303,7 +5303,7 @@ inline void CppGenerator::writeSetattroDefaultReturn(QTextStream &s) const } void CppGenerator::writeSetattroFunction(QTextStream &s, AttroCheck attroCheck, - GeneratorContext &context) + const GeneratorContext &context) { Q_ASSERT(!context.forSmartPointer()); const AbstractMetaClass *metaClass = context.metaClass(); @@ -5343,7 +5343,7 @@ void CppGenerator::writeSetattroFunction(QTextStream &s, AttroCheck attroCheck, writeSetattroDefaultReturn(s); } -void CppGenerator::writeSmartPointerSetattroFunction(QTextStream &s, GeneratorContext &context) +void CppGenerator::writeSmartPointerSetattroFunction(QTextStream &s, const GeneratorContext &context) { Q_ASSERT(context.forSmartPointer()); writeSetattroDefinition(s, context.metaClass()); @@ -5389,7 +5389,7 @@ QString CppGenerator::qObjectGetAttroFunction() const } void CppGenerator::writeGetattroFunction(QTextStream &s, AttroCheck attroCheck, - GeneratorContext &context) + const GeneratorContext &context) { Q_ASSERT(!context.forSmartPointer()); const AbstractMetaClass *metaClass = context.metaClass(); @@ -5462,7 +5462,7 @@ void CppGenerator::writeGetattroFunction(QTextStream &s, AttroCheck attroCheck, s << INDENT << "return " << getattrFunc << ";\n}\n\n"; } -void CppGenerator::writeSmartPointerGetattroFunction(QTextStream &s, GeneratorContext &context) +void CppGenerator::writeSmartPointerGetattroFunction(QTextStream &s, const GeneratorContext &context) { Q_ASSERT(context.forSmartPointer()); const AbstractMetaClass *metaClass = context.metaClass(); @@ -6035,7 +6035,7 @@ void CppGenerator::writeReturnValueHeuristics(QTextStream &s, const AbstractMeta } } -void CppGenerator::writeHashFunction(QTextStream &s, GeneratorContext &context) +void CppGenerator::writeHashFunction(QTextStream &s, const GeneratorContext &context) { const AbstractMetaClass *metaClass = context.metaClass(); s << "static Py_hash_t " << cpythonBaseName(metaClass) << "_HashFunc(PyObject *self) {\n"; @@ -6045,7 +6045,7 @@ void CppGenerator::writeHashFunction(QTextStream &s, GeneratorContext &context) s<< "}\n\n"; } -void CppGenerator::writeStdListWrapperMethods(QTextStream &s, GeneratorContext &context) +void CppGenerator::writeStdListWrapperMethods(QTextStream &s, const GeneratorContext &context) { const AbstractMetaClass *metaClass = context.metaClass(); ErrorCode errorCode(0); @@ -6111,7 +6111,7 @@ void CppGenerator::writeIndexError(QTextStream &s, const QString &errorMsg) } QString CppGenerator::writeReprFunction(QTextStream &s, - GeneratorContext &context, + const GeneratorContext &context, uint indirections) { const AbstractMetaClass *metaClass = context.metaClass(); diff --git a/sources/shiboken2/generator/shiboken2/cppgenerator.h b/sources/shiboken2/generator/shiboken2/cppgenerator.h index 583066c7a..97864135b 100644 --- a/sources/shiboken2/generator/shiboken2/cppgenerator.h +++ b/sources/shiboken2/generator/shiboken2/cppgenerator.h @@ -43,10 +43,10 @@ public: protected: QString fileNameSuffix() const override; - QString fileNameForContext(GeneratorContext &context) const override; + QString fileNameForContext(const GeneratorContext &context) const override; QVector<AbstractMetaFunctionList> filterGroupedOperatorFunctions(const AbstractMetaClass *metaClass, uint query); - void generateClass(QTextStream &s, GeneratorContext &classContext) override; + void generateClass(QTextStream &s, const GeneratorContext &classContext) override; bool finishGeneration() override; private: @@ -66,29 +66,29 @@ private: void writeEnumConverterFunctions(QTextStream &s, const TypeEntry *enumType); void writeEnumConverterFunctions(QTextStream &s, const AbstractMetaEnum *metaEnum); void writeConverterFunctions(QTextStream &s, const AbstractMetaClass *metaClass, - GeneratorContext &classContext); + const GeneratorContext &classContext); void writeCustomConverterFunctions(QTextStream &s, const CustomConversion *customConversion); void writeConverterRegister(QTextStream &s, const AbstractMetaClass *metaClass, - GeneratorContext &classContext); + const GeneratorContext &classContext); void writeCustomConverterRegister(QTextStream &s, const CustomConversion *customConversion, const QString &converterVar); void writeContainerConverterFunctions(QTextStream &s, const AbstractMetaType *containerType); void writeMethodWrapperPreamble(QTextStream &s, OverloadData &overloadData, - GeneratorContext &context); + const GeneratorContext &context); void writeConstructorWrapper(QTextStream &s, const AbstractMetaFunctionList &overloads, - GeneratorContext &classContext); + const GeneratorContext &classContext); void writeMethodWrapper(QTextStream &s, const AbstractMetaFunctionList &overloads, - GeneratorContext &classContext); + const GeneratorContext &classContext); void writeArgumentsInitializer(QTextStream &s, OverloadData &overloadData); void writeCppSelfConversion(QTextStream &s, const GeneratorContext &context, const QString &className, bool useWrapperClass); void writeCppSelfDefinition(QTextStream &s, const AbstractMetaFunction *func, - GeneratorContext &context, + const GeneratorContext &context, bool hasStaticOverload = false); void writeCppSelfDefinition(QTextStream &s, - GeneratorContext &context, + const GeneratorContext &context, bool hasStaticOverload = false, bool cppSelfAsReference = false); @@ -107,11 +107,13 @@ private: void writeSetattroDefinition(QTextStream &s, const AbstractMetaClass *metaClass) const; void writeSetattroDefaultReturn(QTextStream &s) const; - void writeSmartPointerSetattroFunction(QTextStream &s, GeneratorContext &context); - void writeSetattroFunction(QTextStream &s, AttroCheck attroCheck, GeneratorContext &context); + void writeSmartPointerSetattroFunction(QTextStream &s, const GeneratorContext &context); + void writeSetattroFunction(QTextStream &s, AttroCheck attroCheck, + const GeneratorContext &context); static void writeGetattroDefinition(QTextStream &s, const AbstractMetaClass *metaClass); - void writeSmartPointerGetattroFunction(QTextStream &s, GeneratorContext &context); - void writeGetattroFunction(QTextStream &s, AttroCheck attroCheck, GeneratorContext &context); + void writeSmartPointerGetattroFunction(QTextStream &s, const GeneratorContext &context); + void writeGetattroFunction(QTextStream &s, AttroCheck attroCheck, + const GeneratorContext &context); QString writeSmartPointerGetterCast(); QString qObjectGetAttroFunction() const; @@ -182,13 +184,13 @@ private: /// Writes calls to all the possible method/function overloads. void writeFunctionCalls(QTextStream &s, const OverloadData &overloadData, - GeneratorContext &context); + const GeneratorContext &context); /// Writes the call to a single function usually from a collection of overloads. void writeSingleFunctionCall(QTextStream &s, const OverloadData &overloadData, const AbstractMetaFunction *func, - GeneratorContext &context); + const GeneratorContext &context); /// Returns the name of a C++ to Python conversion function. static QString cppToPythonFunctionName(const QString &sourceTypeName, QString targetTypeName = QString()); @@ -241,48 +243,48 @@ private: /// Returns a string containing the name of an argument for the given function and argument index. QString argumentNameFromIndex(const AbstractMetaFunction *func, int argIndex, const AbstractMetaClass **wrappedClass); void writeMethodCall(QTextStream &s, const AbstractMetaFunction *func, - GeneratorContext &context, int maxArgs = 0); + const GeneratorContext &context, int maxArgs = 0); - QString getInitFunctionName(GeneratorContext &context) const; + QString getInitFunctionName(const GeneratorContext &context) const; QString getSimpleClassInitFunctionName(const AbstractMetaClass *metaClass) const; void writeClassRegister(QTextStream &s, const AbstractMetaClass *metaClass, - GeneratorContext &classContext, + const GeneratorContext &classContext, QTextStream &signatureStream); void writeClassDefinition(QTextStream &s, const AbstractMetaClass *metaClass, - GeneratorContext &classContext); + const GeneratorContext &classContext); void writeMethodDefinitionEntry(QTextStream &s, const AbstractMetaFunctionList &overloads); void writeMethodDefinition(QTextStream &s, const AbstractMetaFunctionList &overloads); void writeSignatureInfo(QTextStream &s, const AbstractMetaFunctionList &overloads); /// Writes the implementation of all methods part of python sequence protocol void writeSequenceMethods(QTextStream &s, const AbstractMetaClass *metaClass, - GeneratorContext &context); + const GeneratorContext &context); void writeTypeAsSequenceDefinition(QTextStream &s, const AbstractMetaClass *metaClass); /// Writes the PyMappingMethods structure for types that supports the python mapping protocol. void writeTypeAsMappingDefinition(QTextStream &s, const AbstractMetaClass *metaClass); void writeMappingMethods(QTextStream &s, const AbstractMetaClass *metaClass, - GeneratorContext &context); + const GeneratorContext &context); void writeTypeAsNumberDefinition(QTextStream &s, const AbstractMetaClass *metaClass); void writeTpTraverseFunction(QTextStream &s, const AbstractMetaClass *metaClass); void writeTpClearFunction(QTextStream &s, const AbstractMetaClass *metaClass); - void writeCopyFunction(QTextStream &s, GeneratorContext &context); + void writeCopyFunction(QTextStream &s, const GeneratorContext &context); void writeGetterFunction(QTextStream &s, const AbstractMetaField *metaField, - GeneratorContext &context); + const GeneratorContext &context); void writeSetterFunction(QTextStream &s, const AbstractMetaField *metaField, - GeneratorContext &context); + const GeneratorContext &context); - void writeRichCompareFunction(QTextStream &s, GeneratorContext &context); + void writeRichCompareFunction(QTextStream &s, const GeneratorContext &context); void writeEnumsInitialization(QTextStream &s, AbstractMetaEnumList &enums); void writeEnumInitialization(QTextStream &s, const AbstractMetaEnum *metaEnum); @@ -313,7 +315,7 @@ private: void writeParentChildManagement(QTextStream &s, const AbstractMetaFunction *func, bool userHeuristicForReturn); bool writeParentChildManagement(QTextStream &s, const AbstractMetaFunction *func, int argIndex, bool userHeuristicPolicy); void writeReturnValueHeuristics(QTextStream &s, const AbstractMetaFunction *func); - void writeInitQtMetaTypeFunctionBody(QTextStream &s, GeneratorContext &context) const; + void writeInitQtMetaTypeFunctionBody(QTextStream &s, const GeneratorContext &context) const; /** * Returns the multiple inheritance initializer function for the given class. @@ -338,14 +340,14 @@ private: /// Returns true if generator should produce getters and setters for the given class. bool shouldGenerateGetSetList(const AbstractMetaClass *metaClass); - void writeHashFunction(QTextStream &s, GeneratorContext &context); + void writeHashFunction(QTextStream &s, const GeneratorContext &context); /// Write default implementations for sequence protocol - void writeStdListWrapperMethods(QTextStream &s, GeneratorContext &context); + void writeStdListWrapperMethods(QTextStream &s, const GeneratorContext &context); /// Helper function for writeStdListWrapperMethods. void writeIndexError(QTextStream &s, const QString &errorMsg); - QString writeReprFunction(QTextStream &s, GeneratorContext &context, uint indirections); + QString writeReprFunction(QTextStream &s, const GeneratorContext &context, uint indirections); const AbstractMetaFunction *boolCast(const AbstractMetaClass *metaClass) const; bool hasBoolCast(const AbstractMetaClass *metaClass) const diff --git a/sources/shiboken2/generator/shiboken2/headergenerator.cpp b/sources/shiboken2/generator/shiboken2/headergenerator.cpp index 70a24bd3c..235ea003d 100644 --- a/sources/shiboken2/generator/shiboken2/headergenerator.cpp +++ b/sources/shiboken2/generator/shiboken2/headergenerator.cpp @@ -45,7 +45,7 @@ QString HeaderGenerator::fileNameSuffix() const return QLatin1String("_wrapper.h"); } -QString HeaderGenerator::fileNameForContext(GeneratorContext &context) const +QString HeaderGenerator::fileNameForContext(const GeneratorContext &context) const { const AbstractMetaClass *metaClass = context.metaClass(); if (!context.forSmartPointer()) { @@ -91,9 +91,10 @@ void HeaderGenerator::writeProtectedFieldAccessors(QTextStream &s, const Abstrac << " { " << fieldName << " = value; }\n"; } -void HeaderGenerator::generateClass(QTextStream &s, GeneratorContext &classContext) +void HeaderGenerator::generateClass(QTextStream &s, const GeneratorContext &classContextIn) { - AbstractMetaClass *metaClass = classContext.metaClass(); + GeneratorContext classContext = classContextIn; + const AbstractMetaClass *metaClass = classContext.metaClass(); m_inheritedOverloads.clear(); Indentation indent(INDENT); diff --git a/sources/shiboken2/generator/shiboken2/headergenerator.h b/sources/shiboken2/generator/shiboken2/headergenerator.h index 5f59dd13a..30ce06636 100644 --- a/sources/shiboken2/generator/shiboken2/headergenerator.h +++ b/sources/shiboken2/generator/shiboken2/headergenerator.h @@ -47,8 +47,8 @@ public: protected: QString fileNameSuffix() const override; - QString fileNameForContext(GeneratorContext &context) const override; - void generateClass(QTextStream &s, GeneratorContext &classContext) override; + QString fileNameForContext(const GeneratorContext &context) const override; + void generateClass(QTextStream &s, const GeneratorContext &classContext) override; bool finishGeneration() override; private: |