aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/ApiExtractor/doxygenparser.cpp
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/doxygenparser.cpp
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/doxygenparser.cpp')
-rw-r--r--sources/shiboken6/ApiExtractor/doxygenparser.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/sources/shiboken6/ApiExtractor/doxygenparser.cpp b/sources/shiboken6/ApiExtractor/doxygenparser.cpp
index 90afc245c..a731479c3 100644
--- a/sources/shiboken6/ApiExtractor/doxygenparser.cpp
+++ b/sources/shiboken6/ApiExtractor/doxygenparser.cpp
@@ -42,7 +42,7 @@
#include <QtCore/QFile>
#include <QtCore/QDir>
-static QString getSectionKindAttr(const AbstractMetaFunction *func)
+static QString getSectionKindAttr(const AbstractMetaFunctionCPtr &func)
{
if (func->isSignal())
return QLatin1String("signal");
@@ -121,8 +121,8 @@ void DoxygenParser::fillDocumentation(AbstractMetaClass* metaClass)
metaClass->setDocumentation(classDoc);
//Functions Documentation
- const AbstractMetaFunctionList &funcs = DocParser::documentableFunctions(metaClass);
- for (AbstractMetaFunction *func : funcs) {
+ const auto &funcs = DocParser::documentableFunctions(metaClass);
+ for (const auto &func : funcs) {
QString query = QLatin1String("/doxygen/compounddef/sectiondef");
// properties
if (func->isPropertyReader() || func->isPropertyWriter()
@@ -172,13 +172,13 @@ void DoxygenParser::fillDocumentation(AbstractMetaClass* metaClass)
QString doc = getDocumentation(xquery, funcQuery, DocModificationList());
if (doc.isEmpty()) {
qCWarning(lcShibokenDoc, "%s",
- qPrintable(msgCannotFindDocumentation(doxyFilePath, metaClass, func,
+ qPrintable(msgCannotFindDocumentation(doxyFilePath, metaClass, func.data(),
funcQuery)));
} else {
funcDoc.setValue(doc, tag.first);
}
}
- func->setDocumentation(funcDoc);
+ qSharedPointerConstCast<AbstractMetaFunction>(func)->setDocumentation(funcDoc);
isProperty = false;
}