aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2019-04-12 15:04:39 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2019-04-15 10:23:20 +0000
commit16a16dc4d17e5643ddb1656b382a3f8ffe31fd8f (patch)
treef93109717819816eea15ff580fdc2a5a99b5fefe
parent28f76672a9d7bb38fd596ea27d07396dcedfc6e7 (diff)
shiboken: Pass around struct AddedFunction by QSharedPointer
This is a preparatory step for storing it directly in AbstractMetaFunction. Task-number: PYSIDE-995 Change-Id: Ia281bb8d3d94d3d56549ec227a476d9750922323 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
-rw-r--r--sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp28
-rw-r--r--sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h4
-rw-r--r--sources/shiboken2/ApiExtractor/typedatabase.cpp4
-rw-r--r--sources/shiboken2/ApiExtractor/typesystem.cpp6
-rw-r--r--sources/shiboken2/ApiExtractor/typesystem.h2
-rw-r--r--sources/shiboken2/ApiExtractor/typesystem_typedefs.h4
6 files changed, 25 insertions, 23 deletions
diff --git a/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp b/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp
index 329e3b079..8373889d4 100644
--- a/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp
+++ b/sources/shiboken2/ApiExtractor/abstractmetabuilder.cpp
@@ -662,11 +662,11 @@ void AbstractMetaBuilderPrivate::traverseDom(const FileModelItem &dom)
// Functions added to the module on the type system.
const AddedFunctionList &globalUserFunctions = types->globalUserFunctions();
- for (const AddedFunction &addedFunc : globalUserFunctions) {
+ for (const AddedFunctionPtr &addedFunc : globalUserFunctions) {
AbstractMetaFunction* metaFunc = traverseFunction(addedFunc);
if (Q_UNLIKELY(!metaFunc)) {
qFatal("Unable to traverse added global function \"%s\".",
- qPrintable(addedFunc.name()));
+ qPrintable(addedFunc->name()));
}
metaFunc->setFunctionType(AbstractMetaFunction::NormalFunction);
m_globalFunctions << metaFunc;
@@ -1431,10 +1431,10 @@ void AbstractMetaBuilderPrivate::fillAddedFunctions(AbstractMetaClass *metaClass
{
// Add the functions added by the typesystem
const AddedFunctionList &addedFunctions = metaClass->typeEntry()->addedFunctions();
- for (const AddedFunction &addedFunc : addedFunctions) {
+ for (const AddedFunctionPtr &addedFunc : addedFunctions) {
if (!traverseFunction(addedFunc, metaClass)) {
qFatal("Unable to traverse function \"%s\" added to \"%s\".",
- qPrintable(addedFunc.name()), qPrintable(metaClass->name()));
+ qPrintable(addedFunc->name()), qPrintable(metaClass->name()));
}
}
}
@@ -1588,29 +1588,29 @@ void AbstractMetaBuilderPrivate::traverseEnums(const ScopeModelItem &scopeItem,
}
}
-AbstractMetaFunction* AbstractMetaBuilderPrivate::traverseFunction(const AddedFunction& addedFunc)
+AbstractMetaFunction* AbstractMetaBuilderPrivate::traverseFunction(const AddedFunctionPtr &addedFunc)
{
return traverseFunction(addedFunc, 0);
}
-AbstractMetaFunction* AbstractMetaBuilderPrivate::traverseFunction(const AddedFunction& addedFunc,
+AbstractMetaFunction* AbstractMetaBuilderPrivate::traverseFunction(const AddedFunctionPtr &addedFunc,
AbstractMetaClass *metaClass)
{
AbstractMetaFunction *metaFunction = new AbstractMetaFunction;
- metaFunction->setConstant(addedFunc.isConstant());
- metaFunction->setName(addedFunc.name());
- metaFunction->setOriginalName(addedFunc.name());
+ metaFunction->setConstant(addedFunc->isConstant());
+ metaFunction->setName(addedFunc->name());
+ metaFunction->setOriginalName(addedFunc->name());
AbstractMetaClass::Attributes visibility =
- addedFunc.access() == AddedFunction::Public
+ addedFunc->access() == AddedFunction::Public
? AbstractMetaAttributes::Public : AbstractMetaAttributes::Protected;
metaFunction->setVisibility(visibility);
metaFunction->setUserAdded(true);
- AbstractMetaAttributes::Attribute isStatic = addedFunc.isStatic() ? AbstractMetaFunction::Static : AbstractMetaFunction::None;
+ AbstractMetaAttributes::Attribute isStatic = addedFunc->isStatic() ? AbstractMetaFunction::Static : AbstractMetaFunction::None;
metaFunction->setAttributes(metaFunction->attributes() | AbstractMetaAttributes::FinalInTargetLang | isStatic);
- metaFunction->setType(translateType(addedFunc.returnType()));
+ metaFunction->setType(translateType(addedFunc->returnType()));
- QVector<AddedFunction::TypeInfo> args = addedFunc.arguments();
+ QVector<AddedFunction::TypeInfo> args = addedFunc->arguments();
AbstractMetaArgumentList metaArguments;
for (int i = 0; i < args.count(); ++i) {
@@ -1620,7 +1620,7 @@ AbstractMetaFunction* AbstractMetaBuilderPrivate::traverseFunction(const AddedFu
if (Q_UNLIKELY(!type)) {
qCWarning(lcShiboken,
"Unable to translate type \"%s\" of argument %d of added function \"%s\".",
- qPrintable(typeInfo.name), i + 1, qPrintable(addedFunc.name()));
+ qPrintable(typeInfo.name), i + 1, qPrintable(addedFunc->name()));
delete metaFunction;
return nullptr;
}
diff --git a/sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h b/sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h
index ae36af652..3c0039f0e 100644
--- a/sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h
+++ b/sources/shiboken2/ApiExtractor/abstractmetabuilder_p.h
@@ -94,8 +94,8 @@ public:
AbstractMetaClass *currentClass);
void traverseOperatorFunction(const FunctionModelItem &item,
AbstractMetaClass *currentClass);
- AbstractMetaFunction* traverseFunction(const AddedFunction &addedFunc);
- AbstractMetaFunction* traverseFunction(const AddedFunction &addedFunc,
+ AbstractMetaFunction* traverseFunction(const AddedFunctionPtr &addedFunc);
+ AbstractMetaFunction* traverseFunction(const AddedFunctionPtr &addedFunc,
AbstractMetaClass *metaClass);
AbstractMetaFunction *traverseFunction(const FunctionModelItem &function,
AbstractMetaClass *currentClass);
diff --git a/sources/shiboken2/ApiExtractor/typedatabase.cpp b/sources/shiboken2/ApiExtractor/typedatabase.cpp
index c251ce8c3..a8c69d376 100644
--- a/sources/shiboken2/ApiExtractor/typedatabase.cpp
+++ b/sources/shiboken2/ApiExtractor/typedatabase.cpp
@@ -430,8 +430,8 @@ void TypeDatabase::addGlobalUserFunctions(const AddedFunctionList &functions)
AddedFunctionList TypeDatabase::findGlobalUserFunctions(const QString& name) const
{
AddedFunctionList addedFunctions;
- for (const AddedFunction &func : m_globalUserFunctions) {
- if (func.name() == name)
+ for (const AddedFunctionPtr &func : m_globalUserFunctions) {
+ if (func->name() == name)
addedFunctions.append(func);
}
return addedFunctions;
diff --git a/sources/shiboken2/ApiExtractor/typesystem.cpp b/sources/shiboken2/ApiExtractor/typesystem.cpp
index c47d3df43..e35c997d0 100644
--- a/sources/shiboken2/ApiExtractor/typesystem.cpp
+++ b/sources/shiboken2/ApiExtractor/typesystem.cpp
@@ -2009,8 +2009,8 @@ bool Handler::parseAddFunction(const QXmlStreamReader &,
return false;
}
- AddedFunction func(signature, returnType);
- func.setStatic(staticFunction);
+ AddedFunctionPtr func(new AddedFunction(signature, returnType));
+ func->setStatic(staticFunction);
if (!signature.contains(QLatin1Char('(')))
signature += QLatin1String("()");
m_currentSignature = signature;
@@ -2021,7 +2021,7 @@ bool Handler::parseAddFunction(const QXmlStreamReader &,
m_error = QString::fromLatin1("Bad access type '%1'").arg(access);
return false;
}
- func.setAccess(a);
+ func->setAccess(a);
}
m_contextStack.top()->addedFunctions << func;
diff --git a/sources/shiboken2/ApiExtractor/typesystem.h b/sources/shiboken2/ApiExtractor/typesystem.h
index 7e6fc191b..e2123ea4f 100644
--- a/sources/shiboken2/ApiExtractor/typesystem.h
+++ b/sources/shiboken2/ApiExtractor/typesystem.h
@@ -1269,7 +1269,7 @@ public:
{
m_addedFunctions = addedFunctions;
}
- void addNewFunction(const AddedFunction &addedFunction)
+ void addNewFunction(const AddedFunctionPtr &addedFunction)
{
m_addedFunctions << addedFunction;
}
diff --git a/sources/shiboken2/ApiExtractor/typesystem_typedefs.h b/sources/shiboken2/ApiExtractor/typesystem_typedefs.h
index dc6e5cbcc..5cea587ed 100644
--- a/sources/shiboken2/ApiExtractor/typesystem_typedefs.h
+++ b/sources/shiboken2/ApiExtractor/typesystem_typedefs.h
@@ -31,6 +31,7 @@
#include <QtCore/QHash>
#include <QtCore/QList>
+#include <QtCore/QSharedPointer>
#include <QtCore/QVector>
class CodeSnip;
@@ -40,7 +41,8 @@ struct AddedFunction;
struct FieldModification;
struct FunctionModification;
-typedef QVector<AddedFunction> AddedFunctionList;
+using AddedFunctionPtr = QSharedPointer<AddedFunction>;
+using AddedFunctionList = QVector<AddedFunctionPtr>;
typedef QVector<CodeSnip> CodeSnipList;
typedef QVector<DocModification> DocModificationList;
typedef QVector<FieldModification> FieldModificationList;