aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sources/shiboken6/ApiExtractor/abstractmetalang.cpp37
1 files changed, 26 insertions, 11 deletions
diff --git a/sources/shiboken6/ApiExtractor/abstractmetalang.cpp b/sources/shiboken6/ApiExtractor/abstractmetalang.cpp
index 22f9f7ae4..dc7adfb7f 100644
--- a/sources/shiboken6/ApiExtractor/abstractmetalang.cpp
+++ b/sources/shiboken6/ApiExtractor/abstractmetalang.cpp
@@ -82,6 +82,10 @@ public:
}
void addFunction(const AbstractMetaFunctionCPtr &function);
+ static AbstractMetaFunction *
+ createFunction(const QString &name, AbstractMetaFunction::FunctionType t,
+ Access access, const AbstractMetaArgumentList &arguments,
+ const AbstractMetaType &returnType, AbstractMetaClass *q);
void addConstructor(AbstractMetaFunction::FunctionType t,
Access access,
const AbstractMetaArgumentList &arguments,
@@ -824,21 +828,11 @@ void AbstractMetaClassPrivate::addConstructor(AbstractMetaFunction::FunctionType
const AbstractMetaArgumentList &arguments,
AbstractMetaClass *q)
{
- auto *f = new AbstractMetaFunction;
- f->setType(AbstractMetaType::createVoid());
- f->setOriginalName(q->name());
- f->setName(q->name());
- f->setOwnerClass(q);
- f->setFunctionType(t);
- f->setArguments(arguments);
- f->setDeclaringClass(q);
- f->setAccess(access);
+ auto *f = createFunction(q->name(), t, access, arguments, AbstractMetaType::createVoid(), q);
if (access != Access::Private)
m_hasNonPrivateConstructor = true;
f->setAttributes(AbstractMetaFunction::FinalInTargetLang
| AbstractMetaFunction::AddedMethod);
- f->setImplementingClass(q);
-
addFunction(AbstractMetaFunctionCPtr(f));
}
@@ -863,6 +857,27 @@ void AbstractMetaClass::addDefaultCopyConstructor()
Access::Public, {arg}, this);
}
+AbstractMetaFunction *
+ AbstractMetaClassPrivate::createFunction(const QString &name,
+ AbstractMetaFunction::FunctionType t,
+ Access access,
+ const AbstractMetaArgumentList &arguments,
+ const AbstractMetaType &returnType,
+ AbstractMetaClass *q)
+{
+ auto *f = new AbstractMetaFunction;
+ f->setType(returnType);
+ f->setOriginalName(name);
+ f->setName(name);
+ f->setOwnerClass(q);
+ f->setFunctionType(t);
+ f->setArguments(arguments);
+ f->setDeclaringClass(q);
+ f->setAccess(access);
+ f->setImplementingClass(q);
+ return f;
+}
+
bool AbstractMetaClass::hasNonPrivateConstructor() const
{
return d->m_hasNonPrivateConstructor;