aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/ApiExtractor/abstractmetalang.h
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2020-11-27 17:11:47 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2020-11-30 15:53:54 +0000
commit30cdcd7b8e7f70bf6b64450ca622dd4494e3a0ea (patch)
tree044002feaeb24281e9000648a1342073701ee29c /sources/shiboken6/ApiExtractor/abstractmetalang.h
parentf4fd97655f20e2ce4d24704056b7a7a9ab9db355 (diff)
shiboken6: Store AbstractMetaFunction using a QSharedPointer
Store the list functions (global / class member) as a QList<QSharedPointer<const AbstractMetaFunction> instead of a raw pointer list. This makes passing around function lists easier and solves the memory leaks caused by mixing cloned and unmodified functions while collecting the overload lists in the generators. - Change the function signatures accordingly - Add a qSharedPointerConstCast() for non-const access. - Restructure the traversing of added functions in the AbstractMetaBuilder - Remove some unused typedefs and functions unearthed by the change Change-Id: I08a6c5243750e3eb3813bc3f7172899ad2b13e22 Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/shiboken6/ApiExtractor/abstractmetalang.h')
-rw-r--r--sources/shiboken6/ApiExtractor/abstractmetalang.h35
1 files changed, 17 insertions, 18 deletions
diff --git a/sources/shiboken6/ApiExtractor/abstractmetalang.h b/sources/shiboken6/ApiExtractor/abstractmetalang.h
index b72acfe8c..f0c08d673 100644
--- a/sources/shiboken6/ApiExtractor/abstractmetalang.h
+++ b/sources/shiboken6/ApiExtractor/abstractmetalang.h
@@ -99,16 +99,15 @@ public:
void fixFunctions();
- const AbstractMetaFunctionList &functions() const;
- void setFunctions(const AbstractMetaFunctionList &functions);
- void addFunction(AbstractMetaFunction *function);
- bool hasFunction(const AbstractMetaFunction *f) const;
+ const AbstractMetaFunctionCList &functions() const;
+ void setFunctions(const AbstractMetaFunctionCList &functions);
+ void addFunction(const AbstractMetaFunctionCPtr &function);
bool hasFunction(const QString &str) const;
- const AbstractMetaFunction* findFunction(const QString& functionName) const;
+ AbstractMetaFunctionCPtr findFunction(const QString& functionName) const;
bool hasSignal(const AbstractMetaFunction *f) const;
bool hasConstructors() const;
- const AbstractMetaFunction *copyConstructor() const;
+ AbstractMetaFunctionCPtr copyConstructor() const;
bool hasCopyConstructor() const;
bool hasPrivateCopyConstructor() const;
@@ -134,17 +133,17 @@ public:
bool generateExceptionHandling() const;
- AbstractMetaFunctionList queryFunctionsByName(const QString &name) const;
+ AbstractMetaFunctionCList queryFunctionsByName(const QString &name) const;
static bool queryFunction(const AbstractMetaFunction *f, FunctionQueryOptions query);
- static AbstractMetaFunctionList queryFunctionList(const AbstractMetaFunctionList &list,
+ static AbstractMetaFunctionCList queryFunctionList(const AbstractMetaFunctionCList &list,
FunctionQueryOptions query);
- static const AbstractMetaFunction *queryFirstFunction(const AbstractMetaFunctionList &list,
- FunctionQueryOptions query);
+ static AbstractMetaFunctionCPtr queryFirstFunction(const AbstractMetaFunctionCList &list,
+ FunctionQueryOptions query);
- AbstractMetaFunctionList queryFunctions(FunctionQueryOptions query) const;
- AbstractMetaFunctionList functionsInTargetLang() const;
- AbstractMetaFunctionList cppSignalFunctions() const;
- AbstractMetaFunctionList implicitConversions() const;
+ AbstractMetaFunctionCList queryFunctions(FunctionQueryOptions query) const;
+ AbstractMetaFunctionCList functionsInTargetLang() const;
+ AbstractMetaFunctionCList cppSignalFunctions() const;
+ AbstractMetaFunctionCList implicitConversions() const;
/**
* Retrieves all class' operator overloads that meet
@@ -154,7 +153,7 @@ public:
* /return list of operator overload methods that meet the
* query criteria
*/
- AbstractMetaFunctionList operatorOverloads(OperatorQueryOptions query = AllOperators) const;
+ AbstractMetaFunctionCList operatorOverloads(OperatorQueryOptions query = AllOperators) const;
bool hasArithmeticOperatorOverload() const;
bool hasBitwiseOperatorOverload() const;
@@ -178,7 +177,7 @@ public:
void getEnumsToBeGenerated(AbstractMetaEnumList *enumList) const;
void getEnumsFromInvisibleNamespacesToBeGenerated(AbstractMetaEnumList *enumList) const;
- void getFunctionsFromInvisibleNamespacesToBeGenerated(AbstractMetaFunctionList *funcList) const;
+ void getFunctionsFromInvisibleNamespacesToBeGenerated(AbstractMetaFunctionCList *funcList) const;
QString fullName() const;
@@ -300,9 +299,9 @@ public:
/// Returns a list of conversion operators for this class. The conversion
/// operators are defined in other classes of the same module.
- AbstractMetaFunctionList externalConversionOperators() const;
+ const AbstractMetaFunctionCList &externalConversionOperators() const;
/// Adds a converter operator for this class.
- void addExternalConversionOperator(AbstractMetaFunction* conversionOp);
+ void addExternalConversionOperator(const AbstractMetaFunctionCPtr &conversionOp);
/// Returns true if this class has any converter operators defined elsewhere.
bool hasExternalConversionOperators() const;