summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@theqtcompany.com>2016-03-11 14:40:18 +0100
committerUlf Hermann <ulf.hermann@theqtcompany.com>2016-03-22 15:00:47 +0000
commit4e4f0f1cc2a96c7b27ee368d1f045e95a210a742 (patch)
tree7115998062cc314eb5a93ea0198b2e812e427226 /tools
parent7826c34dfc616fc0697fc2cbea07bbc2b2fc7ff5 (diff)
Handle parantheses and commas in state names
We cannot generate Q_PROPERTY macros in those cases and we need to escape them to generate C++ identifiers. Change-Id: Ie4a35996786817819b7b2520ef060187ef8592bb Reviewed-by: Erik Verbruggen <erik.verbruggen@theqtcompany.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/qscxmlc/scxmlcppdumper.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/tools/qscxmlc/scxmlcppdumper.cpp b/tools/qscxmlc/scxmlcppdumper.cpp
index c4275df..b6d3ec9 100644
--- a/tools/qscxmlc/scxmlcppdumper.cpp
+++ b/tools/qscxmlc/scxmlcppdumper.cpp
@@ -343,8 +343,10 @@ protected:
QString name = mangledName(node);
QString stateName = QStringLiteral("state_") + name;
// Property stuff:
- clazz.properties << QStringLiteral("Q_PROPERTY(bool %1 READ %1 NOTIFY %1Changed)")
- .arg(node->id);
+ if (isValidQPropertyName(node->id)) {
+ clazz.properties << QStringLiteral("Q_PROPERTY(bool %1 READ %1 NOTIFY %1Changed)")
+ .arg(node->id);
+ }
if (m_qtMode) {
Method getter(QStringLiteral("bool %1() const").arg(name));
getter.impl << QStringLiteral("bool %2::%1() const").arg(name)
@@ -377,7 +379,7 @@ protected:
clazz.init.impl << QStringLiteral("QObject::connect(&")
+ stateName
+ QStringLiteral(", SIGNAL(activeChanged(bool)), &stateMachine, SIGNAL(")
- + node->id
+ + mangledName(node)
+ QStringLiteral("Changed(bool)));");
}
@@ -693,9 +695,10 @@ private:
m_serviceProps.append(qMakePair(mangledName, qualifiedName));
clazz.classFields << QStringLiteral("%1 *%2;").arg(qualifiedName, mangledName);
clazz.constructor.initializer << QStringLiteral("%1(Q_NULLPTR)").arg(mangledName);
-
- clazz.properties << QStringLiteral("Q_PROPERTY(%1%2 *%2 READ %2 NOTIFY %2Changed)")
- .arg(namespacePrefix, name);
+ if (isValidQPropertyName(name)) {
+ clazz.properties << QStringLiteral("Q_PROPERTY(%1%2 *%2 READ %2 NOTIFY %2Changed)")
+ .arg(namespacePrefix, name);
+ }
if (m_qtMode) {
Method getter(QStringLiteral("%1 *%2() const").arg(qualifiedName, mangledName));
getter.impl << QStringLiteral("%1 *%2::%3() const").arg(qualifiedName, clazz.className, mangledName)
@@ -1293,6 +1296,9 @@ QString CppDumper::mangleId(const QString &id) // TODO: remove
mangled = mangled.replace(QLatin1Char('-'), QLatin1String("_dash_"));
mangled = mangled.replace(QLatin1Char('@'), QLatin1String("_at_"));
mangled = mangled.replace(QLatin1Char('.'), QLatin1String("_dot_"));
+ mangled = mangled.replace(QLatin1Char(','), QLatin1String("_comma_"));
+ mangled = mangled.replace(QLatin1Char('('), QLatin1String("_lparen_"));
+ mangled = mangled.replace(QLatin1Char(')'), QLatin1String("_rparen_"));
return mangled;
}