aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2/generator/generator.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2018-09-12 14:47:17 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2018-09-13 07:25:12 +0000
commit80365b2115f26713f840e52318678216a6ff2864 (patch)
tree10be908637d1d89bdee76297d74d4bcac257ac95 /sources/shiboken2/generator/generator.cpp
parent7b2025f542729b0c407519d2cb45688dd402eed7 (diff)
shiboken: Add default constructible with default values
Extend the check for default constructible by also checking whether the first argument has an unmodified default value, for example: explicit QSqlIndex(const QString &cursorName = QString(), const QString &name = QString()); This can be treated like default constructible, except that {} may not be used for return values. Task-number: PYSIDE-62 Change-Id: I70af2a624de54201158a4b56e51b67ef115c2fc6 Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'sources/shiboken2/generator/generator.cpp')
-rw-r--r--sources/shiboken2/generator/generator.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/sources/shiboken2/generator/generator.cpp b/sources/shiboken2/generator/generator.cpp
index 7ae5b3fd1..21962b272 100644
--- a/sources/shiboken2/generator/generator.cpp
+++ b/sources/shiboken2/generator/generator.cpp
@@ -83,6 +83,8 @@ QString DefaultValue::returnValue() const
return QLatin1String("nullptr");
case DefaultValue::Void:
return QString();
+ case DefaultValue::DefaultConstructorWithDefaultValues:
+ return m_value + QLatin1String("()");
case DefaultValue::DefaultConstructor:
break;
}
@@ -108,6 +110,7 @@ QString DefaultValue::initialization() const
Q_ASSERT(false);
break;
case DefaultValue::DefaultConstructor:
+ case DefaultValue::DefaultConstructorWithDefaultValues:
break;
}
return QString();
@@ -135,6 +138,7 @@ QString DefaultValue::constructorParameter() const
Q_ASSERT(false);
break;
case DefaultValue::DefaultConstructor:
+ case DefaultValue::DefaultConstructorWithDefaultValues:
break;
}
return m_value + QLatin1String("()");
@@ -734,7 +738,7 @@ DefaultValue Generator::minimalConstructor(const TypeEntry* type) const
// heuristically returned. If this is wrong the build of the generated
// bindings will tell.
return ctor.isEmpty()
- ? DefaultValue(DefaultValue::DefaultConstructor, QLatin1String("::")
+ ? DefaultValue(DefaultValue::DefaultConstructorWithDefaultValues, QLatin1String("::")
+ type->qualifiedCppName())
: DefaultValue(DefaultValue::Custom, ctor);
}
@@ -773,6 +777,11 @@ DefaultValue Generator::minimalConstructor(const AbstractMetaClass* metaClass) c
return DefaultValue(DefaultValue::DefaultConstructor,
QLatin1String("::") + qualifiedCppName);
}
+ // First argument has unmodified default: Default constructible with values
+ if (arguments.constFirst()->hasUnmodifiedDefaultValueExpression()) {
+ return DefaultValue(DefaultValue::DefaultConstructorWithDefaultValues,
+ QLatin1String("::") + qualifiedCppName);
+ }
// Examine arguments, exclude functions taking a self parameter
bool simple = true;
bool suitable = true;