aboutsummaryrefslogtreecommitdiffstats
path: root/sources
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2020-05-12 10:38:41 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2020-05-15 12:49:05 +0200
commit6762ddea99f65ebf4dfa704e5f8c3b3453832c0f (patch)
tree1867344501c66de874a6f22abef6b5164b9a8254 /sources
parentc16caeb5cb0fbce4a552080d75166caf15374767 (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')
-rw-r--r--sources/shiboken2/generator/generator.cpp4
-rw-r--r--sources/shiboken2/generator/generator.h12
-rw-r--r--sources/shiboken2/generator/qtdoc/qtdocgenerator.cpp6
-rw-r--r--sources/shiboken2/generator/qtdoc/qtdocgenerator.h4
-rw-r--r--sources/shiboken2/generator/shiboken2/cppgenerator.cpp60
-rw-r--r--sources/shiboken2/generator/shiboken2/cppgenerator.h60
-rw-r--r--sources/shiboken2/generator/shiboken2/headergenerator.cpp7
-rw-r--r--sources/shiboken2/generator/shiboken2/headergenerator.h4
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: