diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-11-27 17:11:47 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-11-30 15:53:54 +0000 |
commit | 30cdcd7b8e7f70bf6b64450ca622dd4494e3a0ea (patch) | |
tree | 044002feaeb24281e9000648a1342073701ee29c /sources/shiboken6/ApiExtractor/abstractmetalang.h | |
parent | f4fd97655f20e2ce4d24704056b7a7a9ab9db355 (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.h | 35 |
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; |