aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/generator/shiboken/cppgenerator.h
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken6/generator/shiboken/cppgenerator.h')
-rw-r--r--sources/shiboken6/generator/shiboken/cppgenerator.h297
1 files changed, 154 insertions, 143 deletions
diff --git a/sources/shiboken6/generator/shiboken/cppgenerator.h b/sources/shiboken6/generator/shiboken/cppgenerator.h
index 0da7df719..43bdd2623 100644
--- a/sources/shiboken6/generator/shiboken/cppgenerator.h
+++ b/sources/shiboken6/generator/shiboken/cppgenerator.h
@@ -46,85 +46,89 @@ protected:
QString fileNameForContext(const GeneratorContext &context) const override;
static QVector<AbstractMetaFunctionList>
filterGroupedOperatorFunctions(const AbstractMetaClass *metaClass, uint query);
- void generateClass(QTextStream &s, const GeneratorContext &classContext) override;
+ void generateClass(TextStream &s, const GeneratorContext &classContext) override;
bool finishGeneration() override;
private:
- void writeInitFunc(QTextStream &declStr, QTextStream &callStr,
- const Indentor &indent, const QString &initFunctionName,
+ void writeInitFunc(TextStream &declStr, TextStream &callStr,
+ const QString &initFunctionName,
const TypeEntry *enclosingEntry = nullptr) const;
- void writeCacheResetNative(QTextStream &s, const GeneratorContext &classContext);
- void writeConstructorNative(QTextStream &s, const GeneratorContext &classContext,
- const AbstractMetaFunction *func);
- void writeDestructorNative(QTextStream &s, const GeneratorContext &classContext);
+ void writeCacheResetNative(TextStream &s, const GeneratorContext &classContext) const;
+ void writeConstructorNative(TextStream &s, const GeneratorContext &classContext,
+ const AbstractMetaFunction *func) const;
+ void writeDestructorNative(TextStream &s, const GeneratorContext &classContext) const;
QString getVirtualFunctionReturnTypeName(const AbstractMetaFunction *func) const;
- void writeVirtualMethodNative(QTextStream &s, const AbstractMetaFunction *func, int cacheIndex);
- void writeVirtualMethodCppCall(QTextStream &s, const AbstractMetaFunction *func,
+ void writeVirtualMethodNative(TextStream &s, const AbstractMetaFunction *func,
+ int cacheIndex) const;
+ void writeVirtualMethodCppCall(TextStream &s, const AbstractMetaFunction *func,
const QString &funcName, const CodeSnipList &snips,
const AbstractMetaArgument *lastArg, const TypeEntry *retType,
const QString &returnStatement) const;
- QString virtualMethodReturn(QTextStream &s,
+ QString virtualMethodReturn(TextStream &s,
const AbstractMetaFunction *func,
const FunctionModificationList &functionModifications) const;
- void writeMetaObjectMethod(QTextStream &s, const GeneratorContext &classContext);
- void writeMetaCast(QTextStream &s, const GeneratorContext &classContext);
-
- void writeEnumConverterFunctions(QTextStream &s, const TypeEntry *enumType);
- void writeEnumConverterFunctions(QTextStream &s, const AbstractMetaEnum &metaEnum);
- void writeConverterFunctions(QTextStream &s, const AbstractMetaClass *metaClass,
- const GeneratorContext &classContext);
- void writeCustomConverterFunctions(QTextStream &s, const CustomConversion *customConversion);
- void writeConverterRegister(QTextStream &s, const AbstractMetaClass *metaClass,
- const GeneratorContext &classContext);
- void writeCustomConverterRegister(QTextStream &s, const CustomConversion *customConversion,
- const QString &converterVar);
-
- void writeContainerConverterFunctions(QTextStream &s, const AbstractMetaType &containerType);
-
- void writeSmartPointerConverterFunctions(QTextStream &s, const AbstractMetaType &smartPointerType);
-
- void writeMethodWrapperPreamble(QTextStream &s, OverloadData &overloadData,
- const GeneratorContext &context);
- void writeConstructorWrapper(QTextStream &s, const AbstractMetaFunctionList &overloads,
- const GeneratorContext &classContext);
- void writeMethodWrapper(QTextStream &s, const AbstractMetaFunctionList &overloads,
- const GeneratorContext &classContext);
- void writeArgumentsInitializer(QTextStream &s, OverloadData &overloadData);
- void writeCppSelfConversion(QTextStream &s, const GeneratorContext &context,
+ void writeMetaObjectMethod(TextStream &s, const GeneratorContext &classContext) const;
+ void writeMetaCast(TextStream &s, const GeneratorContext &classContext) const;
+
+ void writeEnumConverterFunctions(TextStream &s, const TypeEntry *enumType) const;
+ void writeEnumConverterFunctions(TextStream &s, const AbstractMetaEnum &metaEnum) const;
+ void writeConverterFunctions(TextStream &s, const AbstractMetaClass *metaClass,
+ const GeneratorContext &classContext) const;
+ void writeCustomConverterFunctions(TextStream &s,
+ const CustomConversion *customConversion) const;
+ void writeConverterRegister(TextStream &s, const AbstractMetaClass *metaClass,
+ const GeneratorContext &classContext) const;
+ void writeCustomConverterRegister(TextStream &s, const CustomConversion *customConversion,
+ const QString &converterVar) const;
+
+ void writeContainerConverterFunctions(TextStream &s,
+ const AbstractMetaType &containerType) const;
+
+ void writeSmartPointerConverterFunctions(TextStream &s,
+ const AbstractMetaType &smartPointerType) const;
+
+ void writeMethodWrapperPreamble(TextStream &s, OverloadData &overloadData,
+ const GeneratorContext &context) const;
+ void writeConstructorWrapper(TextStream &s, const AbstractMetaFunctionList &overloads,
+ const GeneratorContext &classContext) const;
+ void writeMethodWrapper(TextStream &s, const AbstractMetaFunctionList &overloads,
+ const GeneratorContext &classContext) const;
+ void writeArgumentsInitializer(TextStream &s, OverloadData &overloadData) const;
+ void writeCppSelfConversion(TextStream &s, const GeneratorContext &context,
const QString &className, bool useWrapperClass) const;
- void writeCppSelfDefinition(QTextStream &s,
+ void writeCppSelfDefinition(TextStream &s,
const AbstractMetaFunction *func,
const GeneratorContext &context,
- bool hasStaticOverload = false);
- void writeCppSelfDefinition(QTextStream &s,
+ bool hasStaticOverload = false) const;
+ void writeCppSelfDefinition(TextStream &s,
const GeneratorContext &context,
bool hasStaticOverload = false,
- bool cppSelfAsReference = false);
+ bool cppSelfAsReference = false) const;
- void writeErrorSection(QTextStream &s, OverloadData &overloadData);
- void writeFunctionReturnErrorCheckSection(QTextStream &s, bool hasReturnValue = true);
+ void writeErrorSection(TextStream &s, OverloadData &overloadData) const;
+ static void writeFunctionReturnErrorCheckSection(TextStream &s, bool hasReturnValue = true);
/// Writes the check section for the validity of wrapped C++ objects.
- void writeInvalidPyObjectCheck(QTextStream &s, const QString &pyObj);
+ static void writeInvalidPyObjectCheck(TextStream &s, const QString &pyObj);
- void writeTypeCheck(QTextStream &s, AbstractMetaType argType, const QString &argumentName,
+ void writeTypeCheck(TextStream &s, AbstractMetaType argType, const QString &argumentName,
bool isNumber = false, const QString &customType = QString(),
bool rejectNull = false) const;
- void writeTypeCheck(QTextStream& s, const OverloadData *overloadData,
+ void writeTypeCheck(TextStream& s, const OverloadData *overloadData,
QString argumentName) const;
- void writeTypeDiscoveryFunction(QTextStream &s, const AbstractMetaClass *metaClass);
-
- void writeSetattroDefinition(QTextStream &s, const AbstractMetaClass *metaClass) const;
- void writeSetattroDefaultReturn(QTextStream &s) const;
- 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, const GeneratorContext &context);
- void writeGetattroFunction(QTextStream &s, AttroCheck attroCheck,
- const GeneratorContext &context);
+ static void writeTypeDiscoveryFunction(TextStream &s, const AbstractMetaClass *metaClass);
+
+ void writeSetattroDefinition(TextStream &s, const AbstractMetaClass *metaClass) const;
+ static void writeSetattroDefaultReturn(TextStream &s);
+ void writeSmartPointerSetattroFunction(TextStream &s, const GeneratorContext &context) const;
+ void writeSetattroFunction(TextStream &s, AttroCheck attroCheck,
+ const GeneratorContext &context) const;
+ static void writeGetattroDefinition(TextStream &s, const AbstractMetaClass *metaClass);
+ static void writeSmartPointerGetattroFunction(TextStream &s, const GeneratorContext &context);
+ void writeGetattroFunction(TextStream &s, AttroCheck attroCheck,
+ const GeneratorContext &context) const;
static QString writeSmartPointerGetterCast();
QString qObjectGetAttroFunction() const;
@@ -140,11 +144,11 @@ private:
* \param defaultValue an optional default value to be used instead of the conversion result
* \param castArgumentAsUnused if true the converted argument is cast as unused to avoid compiler warnings
*/
- void writeArgumentConversion(QTextStream &s, const AbstractMetaType &argType,
+ void writeArgumentConversion(TextStream &s, const AbstractMetaType &argType,
const QString &argName, const QString &pyArgName,
const AbstractMetaClass *context = nullptr,
const QString &defaultValue = QString(),
- bool castArgumentAsUnused = false);
+ bool castArgumentAsUnused = false) const;
/**
* Returns the AbstractMetaType for a function argument.
@@ -160,17 +164,17 @@ private:
std::optional<AbstractMetaType>
getArgumentType(const AbstractMetaFunction *func, int argPos) const;
- void writePythonToCppTypeConversion(QTextStream &s,
+ void writePythonToCppTypeConversion(TextStream &s,
const AbstractMetaType &type,
const QString &pyIn,
const QString &cppOut,
const AbstractMetaClass *context = nullptr,
- const QString &defaultValue = QString());
+ const QString &defaultValue = QString()) const;
/// Writes the conversion rule for arguments of regular and virtual methods.
- void writeConversionRule(QTextStream &s, const AbstractMetaFunction *func, TypeSystem::Language language) const;
+ void writeConversionRule(TextStream &s, const AbstractMetaFunction *func, TypeSystem::Language language) const;
/// Writes the conversion rule for the return value of a method.
- void writeConversionRule(QTextStream &s, const AbstractMetaFunction *func, TypeSystem::Language language,
+ void writeConversionRule(TextStream &s, const AbstractMetaFunction *func, TypeSystem::Language language,
const QString &outputVar) const;
/**
@@ -182,7 +186,7 @@ private:
* \param thereIsReturnValue indicates if the return type of any of the other overloads
* for this function is different from 'void'
*/
- void writeNoneReturn(QTextStream &s, const AbstractMetaFunction *func, bool thereIsReturnValue) const;
+ static void writeNoneReturn(TextStream &s, const AbstractMetaFunction *func, bool thereIsReturnValue);
/**
* Writes the Python function wrapper overload decisor that selects which C++
@@ -190,20 +194,21 @@ private:
* \param s text stream to write
* \param overloadData the overload data describing all the possible overloads for the function/method
*/
- void writeOverloadedFunctionDecisor(QTextStream &s, const OverloadData &overloadData);
+ void writeOverloadedFunctionDecisor(TextStream &s, const OverloadData &overloadData) const;
/// Recursive auxiliar method to the other writeOverloadedFunctionDecisor.
- void writeOverloadedFunctionDecisorEngine(QTextStream &s, const OverloadData *parentOverloadData);
+ void writeOverloadedFunctionDecisorEngine(TextStream &s,
+ const OverloadData *parentOverloadData) const;
/// Writes calls to all the possible method/function overloads.
- void writeFunctionCalls(QTextStream &s,
+ void writeFunctionCalls(TextStream &s,
const OverloadData &overloadData,
- const GeneratorContext &context);
+ const GeneratorContext &context) const;
/// Writes the call to a single function usually from a collection of overloads.
- void writeSingleFunctionCall(QTextStream &s,
+ void writeSingleFunctionCall(TextStream &s,
const OverloadData &overloadData,
const AbstractMetaFunction *func,
- const GeneratorContext &context);
+ const GeneratorContext &context) const;
/// Returns the name of a C++ to Python conversion function.
static QString cppToPythonFunctionName(const QString &sourceTypeName, QString targetTypeName = QString());
@@ -219,137 +224,142 @@ private:
static QString convertibleToCppFunctionName(const CustomConversion::TargetToNativeConversion *toNative, const TypeEntry *targetType);
/// Writes a C++ to Python conversion function.
- void writeCppToPythonFunction(QTextStream &s, const QString &code, const QString &sourceTypeName,
+ void writeCppToPythonFunction(TextStream &s, const QString &code, const QString &sourceTypeName,
QString targetTypeName = QString()) const;
- void writeCppToPythonFunction(QTextStream &s, const CustomConversion *customConversion) const;
- void writeCppToPythonFunction(QTextStream &s, const AbstractMetaType &containerType) const;
+ void writeCppToPythonFunction(TextStream &s, const CustomConversion *customConversion) const;
+ void writeCppToPythonFunction(TextStream &s, const AbstractMetaType &containerType) const;
/// Writes a Python to C++ conversion function.
- void writePythonToCppFunction(QTextStream &s, const QString &code, const QString &sourceTypeName,
+ void writePythonToCppFunction(TextStream &s, const QString &code, const QString &sourceTypeName,
const QString &targetTypeName) const;
/// Writes a Python to C++ convertible check function.
- void writeIsPythonConvertibleToCppFunction(QTextStream &s,
+ void writeIsPythonConvertibleToCppFunction(TextStream &s,
const QString &sourceTypeName,
const QString &targetTypeName,
const QString &condition,
QString pythonToCppFuncName = QString(),
- bool acceptNoneAsCppNull = false);
+ bool acceptNoneAsCppNull = false) const;
/// Writes a pair of Python to C++ conversion and check functions.
- void writePythonToCppConversionFunctions(QTextStream &s,
+ void writePythonToCppConversionFunctions(TextStream &s,
const AbstractMetaType &sourceType,
const AbstractMetaType &targetType,
QString typeCheck = QString(),
QString conversion = QString(),
- const QString &preConversion = QString());
+ const QString &preConversion = QString()) const;
/// Writes a pair of Python to C++ conversion and check functions for implicit conversions.
- void writePythonToCppConversionFunctions(QTextStream &s,
+ void writePythonToCppConversionFunctions(TextStream &s,
const CustomConversion::TargetToNativeConversion *toNative,
- const TypeEntry *targetType);
+ const TypeEntry *targetType) const;
/// Writes a pair of Python to C++ conversion and check functions for instantiated container types.
- void writePythonToCppConversionFunctions(QTextStream &s, const AbstractMetaType &containerType);
+ void writePythonToCppConversionFunctions(TextStream &s,
+ const AbstractMetaType &containerType) const;
- void writeAddPythonToCppConversion(QTextStream &s, const QString &converterVar, const QString &pythonToCppFunc, const QString &isConvertibleFunc);
+ void writeAddPythonToCppConversion(TextStream &s, const QString &converterVar,
+ const QString &pythonToCppFunc,
+ const QString &isConvertibleFunc) const;
- void writeNamedArgumentResolution(QTextStream &s, const AbstractMetaFunction *func,
- bool usePyArgs, const OverloadData &overloadData);
+ void writeNamedArgumentResolution(TextStream &s, const AbstractMetaFunction *func,
+ bool usePyArgs, const OverloadData &overloadData) const;
/// 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,
QString *errorMessage = nullptr) const;
- void writeMethodCall(QTextStream &s, const AbstractMetaFunction *func,
- const GeneratorContext &context, int maxArgs = 0);
+ void writeMethodCall(TextStream &s, const AbstractMetaFunction *func,
+ const GeneratorContext &context, int maxArgs = 0) const;
QString getInitFunctionName(const GeneratorContext &context) const;
QString getSimpleClassInitFunctionName(const AbstractMetaClass *metaClass) const;
- void writeSignatureStrings(QTextStream &s, QTextStream &signatureStream,
+ void writeSignatureStrings(TextStream &s, const QString &signatures,
const QString &arrayName,
const char *comment) const;
- void writeClassRegister(QTextStream &s,
+ void writeClassRegister(TextStream &s,
const AbstractMetaClass *metaClass,
const GeneratorContext &classContext,
- QTextStream &signatureStream);
- void writeClassDefinition(QTextStream &s,
+ const QString &signatures) const;
+ void writeClassDefinition(TextStream &s,
const AbstractMetaClass *metaClass,
const GeneratorContext &classContext);
- void writeMethodDefinitionEntry(QTextStream &s, const AbstractMetaFunctionList &overloads) const;
- void writeMethodDefinition(QTextStream &s, const AbstractMetaFunctionList &overloads) const;
- void writeSignatureInfo(QTextStream &s, const AbstractMetaFunctionList &overloads) const;
+ void writeMethodDefinitionEntry(TextStream &s, const AbstractMetaFunctionList &overloads) const;
+ void writeMethodDefinition(TextStream &s, const AbstractMetaFunctionList &overloads) const;
+ void writeSignatureInfo(TextStream &s, const AbstractMetaFunctionList &overloads) const;
/// Writes the implementation of all methods part of python sequence protocol
- void writeSequenceMethods(QTextStream &s,
+ void writeSequenceMethods(TextStream &s,
const AbstractMetaClass *metaClass,
- const GeneratorContext &context);
- void writeTypeAsSequenceDefinition(QTextStream &s, const AbstractMetaClass *metaClass) const;
+ const GeneratorContext &context) const;
+ void writeTypeAsSequenceDefinition(TextStream &s, const AbstractMetaClass *metaClass) const;
/// Writes the PyMappingMethods structure for types that supports the python mapping protocol.
- void writeTypeAsMappingDefinition(QTextStream &s, const AbstractMetaClass *metaClass) const;
- void writeMappingMethods(QTextStream &s,
+ void writeTypeAsMappingDefinition(TextStream &s, const AbstractMetaClass *metaClass) const;
+ void writeMappingMethods(TextStream &s,
const AbstractMetaClass *metaClass,
- const GeneratorContext &context);
+ const GeneratorContext &context) const;
- void writeTypeAsNumberDefinition(QTextStream &s, const AbstractMetaClass *metaClass) const;
+ void writeTypeAsNumberDefinition(TextStream &s, const AbstractMetaClass *metaClass) const;
- void writeTpTraverseFunction(QTextStream &s, const AbstractMetaClass *metaClass) const;
- void writeTpClearFunction(QTextStream &s, const AbstractMetaClass *metaClass) const;
+ void writeTpTraverseFunction(TextStream &s, const AbstractMetaClass *metaClass) const;
+ void writeTpClearFunction(TextStream &s, const AbstractMetaClass *metaClass) const;
- void writeCopyFunction(QTextStream &s, const GeneratorContext &context);
+ void writeCopyFunction(TextStream &s, const GeneratorContext &context) const;
- void writeGetterFunction(QTextStream &s,
+ void writeGetterFunction(TextStream &s,
const AbstractMetaField &metaField,
- const GeneratorContext &context);
- void writeGetterFunction(QTextStream &s,
+ const GeneratorContext &context) const;
+ void writeGetterFunction(TextStream &s,
const QPropertySpec &property,
- const GeneratorContext &context);
- void writeSetterFunctionPreamble(QTextStream &s,
+ const GeneratorContext &context) const;
+ void writeSetterFunctionPreamble(TextStream &s,
const QString &name,
const QString &funcName,
const AbstractMetaType &type,
- const GeneratorContext &context);
- void writeSetterFunction(QTextStream &s,
+ const GeneratorContext &context) const;
+ void writeSetterFunction(TextStream &s,
const AbstractMetaField &metaField,
- const GeneratorContext &context);
- void writeSetterFunction(QTextStream &s,
+ const GeneratorContext &context) const;
+ void writeSetterFunction(TextStream &s,
const QPropertySpec &property,
- const GeneratorContext &context);
+ const GeneratorContext &context) const;
- void writeRichCompareFunction(QTextStream &s, const GeneratorContext &context);
+ void writeRichCompareFunction(TextStream &s, const GeneratorContext &context) const;
- void writeEnumsInitialization(QTextStream &s, AbstractMetaEnumList &enums);
- void writeEnumInitialization(QTextStream &s, const AbstractMetaEnum &metaEnum);
+ void writeEnumsInitialization(TextStream &s, AbstractMetaEnumList &enums) const;
+ void writeEnumInitialization(TextStream &s, const AbstractMetaEnum &metaEnum) const;
- void writeSignalInitialization(QTextStream &s, const AbstractMetaClass *metaClass);
+ static void writeSignalInitialization(TextStream &s, const AbstractMetaClass *metaClass);
- void writeFlagsMethods(QTextStream &s, const AbstractMetaEnum &cppEnum) const;
- void writeFlagsToLong(QTextStream &s, const AbstractMetaEnum &cppEnum) const;
- void writeFlagsNonZero(QTextStream &s, const AbstractMetaEnum &cppEnum) const;
- void writeFlagsNumberMethodsDefinition(QTextStream &s, const AbstractMetaEnum &cppEnum) const;
- void writeFlagsNumberMethodsDefinitions(QTextStream &s, const AbstractMetaEnumList &enums) const;
- void writeFlagsBinaryOperator(QTextStream &s, const AbstractMetaEnum &cppEnum,
+ void writeFlagsMethods(TextStream &s, const AbstractMetaEnum &cppEnum) const;
+ void writeFlagsToLong(TextStream &s, const AbstractMetaEnum &cppEnum) const;
+ void writeFlagsNonZero(TextStream &s, const AbstractMetaEnum &cppEnum) const;
+ void writeFlagsNumberMethodsDefinition(TextStream &s, const AbstractMetaEnum &cppEnum) const;
+ void writeFlagsNumberMethodsDefinitions(TextStream &s, const AbstractMetaEnumList &enums) const;
+ void writeFlagsBinaryOperator(TextStream &s, const AbstractMetaEnum &cppEnum,
const QString &pyOpName, const QString &cppOpName) const;
- void writeFlagsUnaryOperator(QTextStream &s, const AbstractMetaEnum &cppEnum,
+ void writeFlagsUnaryOperator(TextStream &s, const AbstractMetaEnum &cppEnum,
const QString &pyOpName, const QString &cppOpName,
bool boolResult = false) const;
/// Writes the function that registers the multiple inheritance information for the classes that need it.
- void writeMultipleInheritanceInitializerFunction(QTextStream &s, const AbstractMetaClass *metaClass);
+ static void writeMultipleInheritanceInitializerFunction(TextStream &s, const AbstractMetaClass *metaClass);
/// Writes the implementation of special cast functions, used when we need to cast a class with multiple inheritance.
- void writeSpecialCastFunction(QTextStream &s, const AbstractMetaClass *metaClass);
-
- void writePrimitiveConverterInitialization(QTextStream &s, const CustomConversion *customConversion);
- void writeEnumConverterInitialization(QTextStream &s, const TypeEntry *enumType);
- void writeEnumConverterInitialization(QTextStream &s, const AbstractMetaEnum &metaEnum);
- void writeContainerConverterInitialization(QTextStream &s, const AbstractMetaType &type);
- void writeSmartPointerConverterInitialization(QTextStream &s, const AbstractMetaType &ype);
- void writeExtendedConverterInitialization(QTextStream &s, const TypeEntry *externalType, const QVector<const AbstractMetaClass *>& conversions);
-
- void writeParentChildManagement(QTextStream &s, const AbstractMetaFunction *func, bool userHeuristicForReturn) const;
- bool writeParentChildManagement(QTextStream &s, const AbstractMetaFunction *func, int argIndex, bool userHeuristicPolicy) const;
- void writeReturnValueHeuristics(QTextStream &s, const AbstractMetaFunction *func) const;
- void writeInitQtMetaTypeFunctionBody(QTextStream &s, const GeneratorContext &context) const;
+ static void writeSpecialCastFunction(TextStream &s, const AbstractMetaClass *metaClass);
+
+ void writePrimitiveConverterInitialization(TextStream &s,
+ const CustomConversion *customConversion) const;
+ void writeEnumConverterInitialization(TextStream &s, const TypeEntry *enumType) const;
+ void writeEnumConverterInitialization(TextStream &s, const AbstractMetaEnum &metaEnum) const;
+ void writeContainerConverterInitialization(TextStream &s, const AbstractMetaType &type) const;
+ void writeSmartPointerConverterInitialization(TextStream &s, const AbstractMetaType &ype) const;
+ void writeExtendedConverterInitialization(TextStream &s, const TypeEntry *externalType,
+ const QVector<const AbstractMetaClass *>& conversions) const;
+
+ void writeParentChildManagement(TextStream &s, const AbstractMetaFunction *func, bool userHeuristicForReturn) const;
+ bool writeParentChildManagement(TextStream &s, const AbstractMetaFunction *func, int argIndex, bool userHeuristicPolicy) const;
+ void writeReturnValueHeuristics(TextStream &s, const AbstractMetaFunction *func) const;
+ void writeInitQtMetaTypeFunctionBody(TextStream &s, const GeneratorContext &context) const;
/**
* Returns the multiple inheritance initializer function for the given class.
@@ -360,13 +370,13 @@ private:
static QString multipleInheritanceInitializerFunctionName(const AbstractMetaClass *metaClass);
/// Returns a list of all classes to which the given class could be cast.
- QStringList getAncestorMultipleInheritance(const AbstractMetaClass *metaClass);
+ static QStringList getAncestorMultipleInheritance(const AbstractMetaClass *metaClass);
/// Returns true if the given class supports the python number protocol
- bool supportsNumberProtocol(const AbstractMetaClass *metaClass);
+ bool supportsNumberProtocol(const AbstractMetaClass *metaClass) const;
/// Returns true if the given class supports the python sequence protocol
- bool supportsSequenceProtocol(const AbstractMetaClass *metaClass);
+ bool supportsSequenceProtocol(const AbstractMetaClass *metaClass) const;
/// Returns true if the given class supports the python mapping protocol
bool supportsMappingProtocol(const AbstractMetaClass *metaClass) const;
@@ -374,14 +384,15 @@ private:
/// Returns true if generator should produce getters and setters for the given class.
bool shouldGenerateGetSetList(const AbstractMetaClass *metaClass) const;
- void writeHashFunction(QTextStream &s, const GeneratorContext &context);
+ void writeHashFunction(TextStream &s, const GeneratorContext &context) const;
/// Write default implementations for sequence protocol
- void writeDefaultSequenceMethods(QTextStream &s, const GeneratorContext &context);
+ void writeDefaultSequenceMethods(TextStream &s, const GeneratorContext &context) const;
/// Helper function for writeStdListWrapperMethods.
- void writeIndexError(QTextStream &s, const QString &errorMsg);
+ static void writeIndexError(TextStream &s, const QString &errorMsg);
- QString writeReprFunction(QTextStream &s, const GeneratorContext &context, uint indirections);
+ QString writeReprFunction(TextStream &s, const GeneratorContext &context,
+ uint indirections) const;
const AbstractMetaFunction *boolCast(const AbstractMetaClass *metaClass) const;
bool hasBoolCast(const AbstractMetaClass *metaClass) const