diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2016-09-21 16:33:33 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2016-10-27 08:28:35 +0000 |
commit | 44798eeb43a9a51647fe57a1656072454a4487ee (patch) | |
tree | ab43549f9af55ed3b3cb1107bb17c9e35cd189f8 /tools | |
parent | 2f44d6d3c03a5484ffa542462c7789f593840774 (diff) |
Further clean up qscxmlinvokableservice.hv5.8.0-beta1
We can group the various parameters passed around between the factories
into a struct and we can move some methods into the private interface.
Change-Id: I579ced7d501bdb617d4aefd47ced49746c9a5b94
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/qscxmlc/data.t | 20 | ||||
-rw-r--r-- | tools/qscxmlc/scxmlcppdumper.cpp | 64 |
2 files changed, 46 insertions, 38 deletions
diff --git a/tools/qscxmlc/data.t b/tools/qscxmlc/data.t index 2c23de0..a813d01 100644 --- a/tools/qscxmlc/data.t +++ b/tools/qscxmlc/data.t @@ -55,6 +55,26 @@ struct ${classname}::Data: private QScxmlTableData { return p; } + static QScxmlExecutableContent::InvokeInfo invoke( + QScxmlExecutableContent::StringId id, + QScxmlExecutableContent::StringId prefix, + QScxmlExecutableContent::EvaluatorId expr, + QScxmlExecutableContent::StringId location, + QScxmlExecutableContent::StringId context, + QScxmlExecutableContent::ContainerId finalize, + bool autoforward) + { + QScxmlExecutableContent::InvokeInfo i; + i.id = id; + i.prefix = prefix; + i.expr = expr; + i.location = location; + i.context = context; + i.finalize = finalize; + i.autoforward = autoforward; + return i; + } + static qint32 theInstructions[]; static QScxmlExecutableContent::StringId dataIds[]; static QScxmlExecutableContent::EvaluatorInfo evaluators[]; diff --git a/tools/qscxmlc/scxmlcppdumper.cpp b/tools/qscxmlc/scxmlcppdumper.cpp index 83a9886..c29ef90 100644 --- a/tools/qscxmlc/scxmlcppdumper.cpp +++ b/tools/qscxmlc/scxmlcppdumper.cpp @@ -378,30 +378,28 @@ void generateCppDataModelEvaluators(const GeneratedTableData::DataModelInfo &inf int createFactoryId(QStringList &factories, const QString &className, const QString &namespacePrefix, - QScxmlExecutableContent::StringId invokeLocation, - QScxmlExecutableContent::EvaluatorId srcexpr, - QScxmlExecutableContent::StringId id, - QScxmlExecutableContent::StringId idPrefix, - QScxmlExecutableContent::StringId idlocation, + const QScxmlExecutableContent::InvokeInfo &invokeInfo, const QVector<QScxmlExecutableContent::StringId> &namelist, - bool autoforward, - const QVector<QScxmlExecutableContent::ParameterInfo> ¶ms, - QScxmlExecutableContent::ContainerId finalize, + const QVector<QScxmlExecutableContent::ParameterInfo> ¶meters, bool useCxx11) { const int idx = factories.size(); QString line = QStringLiteral("case %1: return new ").arg(QString::number(idx)); - if (srcexpr == QScxmlExecutableContent::NoInstruction) { - line += QStringLiteral("QScxmlStaticScxmlServiceFactory< %1::%2 >(%3, ") - .arg(namespacePrefix, className, QString::number(invokeLocation)); + if (invokeInfo.expr == QScxmlExecutableContent::NoInstruction) { + line += QStringLiteral("QScxmlStaticScxmlServiceFactory< %1::%2 >(") + .arg(namespacePrefix, className); } else { - line += QStringLiteral("QScxmlDynamicScxmlServiceFactory(%1, %2, ") - .arg(invokeLocation).arg(srcexpr); - } - line += QStringLiteral("%1, ").arg(QString::number(id)); - line += QStringLiteral("%1, ").arg(QString::number(idPrefix)); - line += QStringLiteral("%1, ").arg(QString::number(idlocation)); + line += QStringLiteral("QScxmlDynamicScxmlServiceFactory("); + } + line += QStringLiteral("invoke(%1, %2, %3, %4, %5, %6, %7), ") + .arg(QString::number(invokeInfo.id), + QString::number(invokeInfo.prefix), + QString::number(invokeInfo.expr), + QString::number(invokeInfo.location), + QString::number(invokeInfo.context), + QString::number(invokeInfo.finalize)) + .arg(invokeInfo.autoforward ? QStringLiteral("true") : QStringLiteral("false")); { QStringList l; for (auto name : namelist) { @@ -410,21 +408,18 @@ int createFactoryId(QStringList &factories, const QString &className, line += QStringLiteral("%1, ").arg( createVector(QStringLiteral("QScxmlExecutableContent::StringId"), l, useCxx11)); } - line += QStringLiteral("%1, ").arg(autoforward ? QStringLiteral("true") - : QStringLiteral("false")); { QStringList l; - for (const auto ¶m : params) { + for (const auto ¶meter : parameters) { l += QStringLiteral("param(%1, %2, %3)") - .arg(QString::number(param.name), - QString::number(param.expr), - QString::number(param.location)); + .arg(QString::number(parameter.name), + QString::number(parameter.expr), + QString::number(parameter.location)); } - line += QStringLiteral("%1, ").arg( + line += QStringLiteral("%1);").arg( createVector(QStringLiteral("QScxmlExecutableContent::ParameterInfo"), l, useCxx11)); } - line += QStringLiteral("%1);").arg(finalize); factories.append(line); return idx; @@ -460,23 +455,16 @@ void CppDumper::dump(TranslationUnit *unit) auto metaDataInfo = &metaDataInfos[i]; GeneratedTableData::build(doc, &tables[i], metaDataInfo, &dataModelInfos[i], [this, &factories, i, &classnameForDocument, &namespacePrefix]( - QScxmlExecutableContent::StringId invokeLocation, - QScxmlExecutableContent::EvaluatorId srcexpr, - QScxmlExecutableContent::StringId id, - QScxmlExecutableContent::StringId idPrefix, - QScxmlExecutableContent::StringId idlocation, - const QVector<QScxmlExecutableContent::StringId> &namelist, - bool autoforward, - const QVector<QScxmlExecutableContent::ParameterInfo> ¶ms, - QScxmlExecutableContent::ContainerId finalize, + const QScxmlExecutableContent::InvokeInfo &invokeInfo, + const QVector<QScxmlExecutableContent::StringId> &names, + const QVector<QScxmlExecutableContent::ParameterInfo> ¶meters, const QSharedPointer<DocumentModel::ScxmlDocument> &content) -> int { QString className; - if (srcexpr == QScxmlExecutableContent::NoInstruction) { + if (invokeInfo.expr == QScxmlExecutableContent::NoInstruction) { className = mangleIdentifier(classnameForDocument.value(content.data())); } - return createFactoryId(factories[i], className, namespacePrefix, invokeLocation, - srcexpr, id, idPrefix, idlocation, namelist, autoforward, params, - finalize, m_translationUnit->useCxx11); + return createFactoryId(factories[i], className, namespacePrefix, + invokeInfo, names, parameters, m_translationUnit->useCxx11); }); classNames.append(mangleIdentifier(classnameForDocument.value(doc))); } |