diff options
author | Erik Verbruggen <erik.verbruggen@theqtcompany.com> | 2016-01-21 12:09:20 +0100 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@theqtcompany.com> | 2016-02-04 10:18:50 +0000 |
commit | 9ada7aa0f5a41312c953ee3c34053edc4cf15df9 (patch) | |
tree | 993f282c241979d1c4f4fd574b7e181bbbb1eb36 /tools/qscxmlc/scxmlcppdumper.cpp | |
parent | 291a963477e190540b2b9a6f0a5c8ce836812067 (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.cpp | 49 |
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 |