aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2017-03-28 13:25:57 +0200
committerChristian Tismer <tismer@stackless.com>2017-03-28 15:04:58 +0000
commitb8f7e2aaa40198e48fd5a619f5fa63ed2b3fbb80 (patch)
tree08a7e8df1409e920ebd0593c943db189dee06405
parent9bd988eb1b4327225809d4e449af7f8b3105dd87 (diff)
Generator::minimalConstructor(): No longer generate C-style casts
bool: false Other primitives: int(0) Flags: Flags(0) Enums: static_cast<Enum>(0) Change-Id: Ic24c2d95106682508c58c78d873137f8a91bc3f8 Reviewed-by: Christian Tismer <tismer@stackless.com>
-rw-r--r--generator/generator.cpp19
1 files changed, 12 insertions, 7 deletions
diff --git a/generator/generator.cpp b/generator/generator.cpp
index e4d27c067..d7f98a90f 100644
--- a/generator/generator.cpp
+++ b/generator/generator.cpp
@@ -578,10 +578,9 @@ QString Generator::minimalConstructor(const AbstractMetaType* type) const
}
if (type->isNativePointer())
- return QString::fromLatin1("((%1*)0)").arg(type->typeEntry()->qualifiedCppName());
-
+ return QLatin1String("static_cast<") + type->typeEntry()->qualifiedCppName() + QLatin1String(" *>(0)");
if (Generator::isPointer(type))
- return QString::fromLatin1("((::%1*)0)").arg(type->typeEntry()->qualifiedCppName());
+ return QLatin1String("static_cast< ::") + type->typeEntry()->qualifiedCppName() + QLatin1String(" *>(0)");
if (type->typeEntry()->isComplex()) {
const ComplexTypeEntry* cType = reinterpret_cast<const ComplexTypeEntry*>(type->typeEntry());
@@ -602,11 +601,17 @@ QString Generator::minimalConstructor(const TypeEntry* type) const
if (!type)
return QString();
- if (type->isCppPrimitive())
- return QString::fromLatin1("((%1)0)").arg(type->qualifiedCppName());
+ if (type->isCppPrimitive()) {
+ const QString &name = type->qualifiedCppName();
+ return name == QLatin1String("bool")
+ ? QLatin1String("false") : name + QLatin1String("(0)");
+ }
+
+ if (type->isEnum())
+ return QLatin1String("static_cast< ::") + type->qualifiedCppName() + QLatin1String(">(0)");
- if (type->isEnum() || type->isFlags())
- return QString::fromLatin1("((::%1)0)").arg(type->qualifiedCppName());
+ if (type->isFlags())
+ return type->qualifiedCppName() + QLatin1String("(0)");
if (type->isPrimitive()) {
QString ctor = reinterpret_cast<const PrimitiveTypeEntry*>(type)->defaultConstructor();