summaryrefslogtreecommitdiffstats
path: root/tools/qscxmlc/scxmlcppdumper.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2016-09-12 18:43:23 +0200
committerUlf Hermann <ulf.hermann@qt.io>2016-09-14 11:37:38 +0000
commitabd6d0c93bdbe24b78dc26212d4d586425a50706 (patch)
tree0cc1bf82b2d313171b3042f91fe761cd37bd62bd /tools/qscxmlc/scxmlcppdumper.cpp
parentfd81d2fb5823089fb245fdb5ec9412291d41a3a2 (diff)
Don't generate empty switch statements for C++ data models
Some compilers will complain about them. Change-Id: I82bee601480e43ce00657d609d30179fe17e6bdb Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'tools/qscxmlc/scxmlcppdumper.cpp')
-rw-r--r--tools/qscxmlc/scxmlcppdumper.cpp61
1 files changed, 40 insertions, 21 deletions
diff --git a/tools/qscxmlc/scxmlcppdumper.cpp b/tools/qscxmlc/scxmlcppdumper.cpp
index 4d0e795..f4e6f8a 100644
--- a/tools/qscxmlc/scxmlcppdumper.cpp
+++ b/tools/qscxmlc/scxmlcppdumper.cpp
@@ -311,49 +311,68 @@ void generateTables(const GeneratedTableData &td, Replacements &replacements)
void generateCppDataModelEvaluators(const GeneratedTableData::DataModelInfo &info,
Replacements &replacements)
{
- {
- QString evals;
+ const QString switchStart = QStringLiteral(" switch (id) {\n");
+ const QString switchEnd = QStringLiteral(" default: break;\n }");
+ const QString unusedId = QStringLiteral(" Q_UNUSED(id);");
+ QString stringEvals;
+ if (!info.stringEvaluators.isEmpty()) {
+ stringEvals += switchStart;
for (auto it = info.stringEvaluators.constBegin(), eit = info.stringEvaluators.constEnd();
it != eit; ++it) {
- evals += QStringLiteral(" case %1:\n").arg(it.key());
- evals += QStringLiteral(" return [this]()->QString{ return %1; }();\n")
+ stringEvals += QStringLiteral(" case %1:\n").arg(it.key());
+ stringEvals += QStringLiteral(" return [this]()->QString{ return %1; }();\n")
.arg(it.value());
}
- replacements[QStringLiteral("evaluateToStringCases")] = evals;
+ stringEvals += switchEnd;
+ } else {
+ stringEvals += unusedId;
}
+ replacements[QStringLiteral("evaluateToStringCases")] = stringEvals;
- {
- QString evals;
+ QString boolEvals;
+ if (!info.boolEvaluators.isEmpty()) {
+ boolEvals += switchStart;
for (auto it = info.boolEvaluators.constBegin(), eit = info.boolEvaluators.constEnd();
it != eit; ++it) {
- evals += QStringLiteral(" case %1:\n").arg(it.key());
- evals += QStringLiteral(" return [this]()->bool{ return %1; }();\n")
+ boolEvals += QStringLiteral(" case %1:\n").arg(it.key());
+ boolEvals += QStringLiteral(" return [this]()->bool{ return %1; }();\n")
.arg(it.value());
}
- replacements[QStringLiteral("evaluateToBoolCases")] = evals;
+ boolEvals += switchEnd;
+ } else {
+ boolEvals += unusedId;
}
+ replacements[QStringLiteral("evaluateToBoolCases")] = boolEvals;
- {
- QString evals;
+ QString variantEvals;
+ if (!info.variantEvaluators.isEmpty()) {
+ variantEvals += switchStart;
for (auto it = info.variantEvaluators.constBegin(), eit = info.variantEvaluators.constEnd();
it != eit; ++it) {
- evals += QStringLiteral(" case %1:\n").arg(it.key());
- evals += QStringLiteral(" return [this]()->QVariant{ return %1; }();\n")
+ variantEvals += QStringLiteral(" case %1:\n").arg(it.key());
+ variantEvals += QStringLiteral(" return [this]()->QVariant{ return %1; }();\n")
.arg(it.value());
}
- replacements[QStringLiteral("evaluateToVariantCases")] = evals;
+ variantEvals += switchEnd;
+ } else {
+ variantEvals += unusedId;
}
+ replacements[QStringLiteral("evaluateToVariantCases")] = variantEvals;
- {
- QString evals;
+ QString voidEvals;
+ if (!info.voidEvaluators.isEmpty()) {
+ voidEvals = switchStart;
for (auto it = info.voidEvaluators.constBegin(), eit = info.voidEvaluators.constEnd();
it != eit; ++it) {
- evals += QStringLiteral(" case %1:\n").arg(it.key());
- evals += QStringLiteral(" [this]()->void{ %1 }();\n").arg(it.value());
- evals += QStringLiteral(" break;\n");
+ voidEvals += QStringLiteral(" case %1:\n").arg(it.key());
+ voidEvals += QStringLiteral(" [this]()->void{ %1 }();\n").arg(it.value());
+ voidEvals += QStringLiteral(" return;\n");
}
- replacements[QStringLiteral("evaluateToVoidCases")] = evals;
+ voidEvals += switchEnd;
+ } else {
+ voidEvals += unusedId;
}
+ replacements[QStringLiteral("evaluateToVoidCases")] = voidEvals;
}
int createFactoryId(QStringList &factories, const QString &className,