diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-10-22 08:59:03 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-10-27 10:01:34 +0000 |
commit | 8b88410f9f9589235738bb26739d40af4447cc05 (patch) | |
tree | 19276bec219bf2a3c728fdced77b8fb3a45063fc /sources/shiboken2/generator/shiboken2/shibokengenerator.h | |
parent | 49bd2b28d4a666107d4d124b9a5cc9fbe88d8fe8 (diff) |
shiboken2: AbstractMetaArgument: use QSharedData[Pointer]
Similar to AbstractMetaType, AbstractMetaArgument was previously
kept as a raw pointer. The data were copied numerous times by
AbstractMetaArgument::copy() when adding the inherited functions to a
AbstractMetaClass.
Similar to what was done for AbstractMetaType in
6cad0686101b252cfdbd1a6768a2b02c39aa1d8a, change the type to be based
on QSharedData[Pointer]. It can then be passed around and treated like
a C++ value type, with Qt sharing the data when possible behind the
scenes.
* Remove inheritance from AbstractMetaVariable by moving
the fields over.
* Remove the unused field m_originalName.
Change-Id: Ic9e476ca71e163de131fbecc267d0a4e336cb0b9
Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/shiboken2/generator/shiboken2/shibokengenerator.h')
-rw-r--r-- | sources/shiboken2/generator/shiboken2/shibokengenerator.h | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/sources/shiboken2/generator/shiboken2/shibokengenerator.h b/sources/shiboken2/generator/shiboken2/shibokengenerator.h index 7b2f0cb39..0d49764ab 100644 --- a/sources/shiboken2/generator/shiboken2/shibokengenerator.h +++ b/sources/shiboken2/generator/shiboken2/shibokengenerator.h @@ -297,7 +297,7 @@ protected: static bool isCppIntegralPrimitive(const AbstractMetaType &type); /// Checks if an argument type should be dereferenced by the Python method wrapper before calling the C++ method. - static bool shouldDereferenceArgumentPointer(const AbstractMetaArgument *arg); + static bool shouldDereferenceArgumentPointer(const AbstractMetaArgument &arg); /// Checks if a meta type should be dereferenced by the Python method wrapper passing it to C++. static bool shouldDereferenceAbstractMetaTypePointer(const AbstractMetaType &metaType); @@ -330,7 +330,7 @@ protected: QString guessCPythonCheckFunction(const QString &type, AbstractMetaType *metaType); QString cpythonIsConvertibleFunction(const TypeEntry *type, bool genericNumberType = false, bool checkExact = false); QString cpythonIsConvertibleFunction(AbstractMetaType metaType, bool genericNumberType = false); - QString cpythonIsConvertibleFunction(const AbstractMetaArgument *metaArg, bool genericNumberType = false); + QString cpythonIsConvertibleFunction(const AbstractMetaArgument &metaArg, bool genericNumberType = false); QString cpythonToCppConversionFunction(const AbstractMetaClass *metaClass); QString cpythonToCppConversionFunction(const AbstractMetaType &type, const AbstractMetaClass *context = nullptr); @@ -356,9 +356,9 @@ protected: /// Guesses the scope to where belongs an argument's default value. QString guessScopeForDefaultValue(const AbstractMetaFunction *func, - const AbstractMetaArgument *arg) const; + const AbstractMetaArgument &arg) const; QString guessScopeForDefaultFlagsValue(const AbstractMetaFunction *func, - const AbstractMetaArgument *arg, + const AbstractMetaArgument &arg, const QString &value) const; static QString cpythonEnumName(const EnumTypeEntry *enumEntry); @@ -505,7 +505,7 @@ private: */ void writeArgument(QTextStream &s, const AbstractMetaFunction *func, - const AbstractMetaArgument *argument, + const AbstractMetaArgument &argument, Options options = NoOption) const; /** * Create a QString in the C++ format to an function argument. @@ -514,13 +514,13 @@ private: * \param options some extra options. */ QString argumentString(const AbstractMetaFunction *func, - const AbstractMetaArgument *argument, + const AbstractMetaArgument &argument, Options options = NoOption) const; QString functionReturnType(const AbstractMetaFunction *func, Options options = NoOption) const; /// Utility function for writeCodeSnips. - using ArgumentVarReplacementPair = QPair<const AbstractMetaArgument *, QString>; + using ArgumentVarReplacementPair = QPair<AbstractMetaArgument, QString>; using ArgumentVarReplacementList = QVector<ArgumentVarReplacementPair>; ArgumentVarReplacementList getArgumentReplacement(const AbstractMetaFunction* func, bool usePyArgs, TypeSystem::Language language, |