diff options
author | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2016-03-11 14:40:18 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2016-03-22 15:00:47 +0000 |
commit | 4e4f0f1cc2a96c7b27ee368d1f045e95a210a742 (patch) | |
tree | 7115998062cc314eb5a93ea0198b2e812e427226 /tools | |
parent | 7826c34dfc616fc0697fc2cbea07bbc2b2fc7ff5 (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.cpp | 18 |
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; } |