summaryrefslogtreecommitdiffstats
path: root/tools/qscxmlc/scxmlcppdumper.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@theqtcompany.com>2016-01-21 12:09:20 +0100
committerErik Verbruggen <erik.verbruggen@theqtcompany.com>2016-02-04 10:18:50 +0000
commit9ada7aa0f5a41312c953ee3c34053edc4cf15df9 (patch)
tree993f282c241979d1c4f4fd574b7e181bbbb1eb36 /tools/qscxmlc/scxmlcppdumper.cpp
parent291a963477e190540b2b9a6f0a5c8ce836812067 (diff)
Remove event_ prefix from event signals and slots.
Also only generate the C++ declarations and definitions when in "qt mode". Change-Id: I799ce3efe23e046d26180d1a6e690755523dbed1 Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'tools/qscxmlc/scxmlcppdumper.cpp')
-rw-r--r--tools/qscxmlc/scxmlcppdumper.cpp49
1 files changed, 28 insertions, 21 deletions
diff --git a/tools/qscxmlc/scxmlcppdumper.cpp b/tools/qscxmlc/scxmlcppdumper.cpp
index 9a38d56..3ccfb0e 100644
--- a/tools/qscxmlc/scxmlcppdumper.cpp
+++ b/tools/qscxmlc/scxmlcppdumper.cpp
@@ -197,6 +197,7 @@ public:
, clazz(clazz)
, translationUnit(tu)
, m_bindLate(false)
+ , m_qtMode(false)
{
if (!tu->namespaceName.isEmpty()) {
namespacePrefix += QStringLiteral("%1::").arg(tu->namespaceName);
@@ -208,6 +209,7 @@ public:
Q_ASSERT(doc);
clazz.className = translationUnit->classnameForDocument.value(doc);
+ m_qtMode = doc->qtMode;
doc->root->accept(this);
@@ -536,10 +538,10 @@ protected:
bool visit(Send *node) Q_DECL_OVERRIDE
{
- if (node->type == QStringLiteral("qt:signal")) {
+ if (m_qtMode && node->type == QStringLiteral("qt:signal")) {
if (!m_signals.contains(node->event)) {
m_signals.insert(node->event);
- clazz.signalMethods << QStringLiteral("void event_%1(const QVariant &data);").arg(CppDumper::mangleId(node->event));
+ clazz.signalMethods << QStringLiteral("void %1(const QVariant &data);").arg(node->event);
}
}
@@ -669,32 +671,36 @@ private:
{
QStringList knownEventsList = m_knownEvents.toList();
std::sort(knownEventsList.begin(), knownEventsList.end());
- foreach (const QString &event, knownEventsList) {
- if (event.startsWith(QStringLiteral("done.")) || event.startsWith(QStringLiteral("qsignal."))
- || event.startsWith(QStringLiteral("qevent."))) {
- continue;
+ if (m_qtMode) {
+ foreach (const QString &event, knownEventsList) {
+ if (event.startsWith(QStringLiteral("done.")) || event.startsWith(QStringLiteral("qsignal."))
+ || event.startsWith(QStringLiteral("qevent."))) {
+ continue;
+ }
+ if (event.contains(QLatin1Char('*')))
+ continue;
+
+ clazz.publicSlotDeclarations << QStringLiteral("void ") + event + QStringLiteral("(const QVariant &eventData = QVariant());");
+ clazz.publicSlotDefinitions << QStringLiteral("void ") + clazz.className
+ + QStringLiteral("::")
+ + event
+ + QStringLiteral("(const QVariant &eventData)\n{ submitEvent(data->") + qba(event)
+ + QStringLiteral(", eventData); }");
}
- if (event.contains(QLatin1Char('*')))
- continue;
-
- clazz.publicSlotDeclarations << QStringLiteral("void event_") + CppDumper::mangleId(event) + QStringLiteral("(const QVariant &eventData = QVariant());");
- clazz.publicSlotDefinitions << QStringLiteral("void ") + clazz.className
- + QStringLiteral("::event_")
- + CppDumper::mangleId(event)
- + QStringLiteral("(const QVariant &eventData)\n{ submitEvent(data->") + qba(event)
- + QStringLiteral(", eventData); }");
}
if (!m_signals.isEmpty()) {
clazz.needsEventFilter = true;
clazz.init.impl << QStringLiteral("stateMachine.setScxmlEventFilter(this);");
auto &dm = clazz.dataMethods;
- dm << QStringLiteral("bool handle(QScxmlEvent *event, QScxmlStateMachine *stateMachine) Q_DECL_OVERRIDE {")
- << QStringLiteral(" if (event->originType() != QStringLiteral(\"qt:signal\")) { return true; }")
- << QStringLiteral(" %1 *m = qobject_cast<%1 *>(stateMachine);").arg(clazz.className);
- foreach (const QString &s, m_signals) {
- dm << QStringLiteral(" if (event->name() == %1) { emit m->event_%2(event->data()); return false; }")
- .arg(qba(s), CppDumper::mangleId(s));
+ dm << QStringLiteral("bool handle(QScxmlEvent *event, QScxmlStateMachine *stateMachine) Q_DECL_OVERRIDE {");
+ if (m_qtMode) {
+ dm << QStringLiteral(" if (event->originType() != QStringLiteral(\"qt:signal\")) { return true; }")
+ << QStringLiteral(" %1 *m = qobject_cast<%1 *>(stateMachine);").arg(clazz.className);
+ foreach (const QString &s, m_signals) {
+ dm << QStringLiteral(" if (event->name() == %1) { emit m->%2(event->data()); return false; }")
+ .arg(qba(s), CppDumper::mangleId(s));
+ }
}
dm << QStringLiteral(" return true;")
<< QStringLiteral("}")
@@ -1037,6 +1043,7 @@ private:
QSet<QString> m_signals;
QString m_currentTransitionName;
bool m_bindLate;
+ bool m_qtMode;
QVector<DocumentModel::DataElement *> m_dataElements;
};
} // anonymous namespace