summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2016-09-21 16:33:33 +0200
committerUlf Hermann <ulf.hermann@qt.io>2016-10-27 08:28:35 +0000
commit44798eeb43a9a51647fe57a1656072454a4487ee (patch)
treeab43549f9af55ed3b3cb1107bb17c9e35cd189f8 /tools
parent2f44d6d3c03a5484ffa542462c7789f593840774 (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.t20
-rw-r--r--tools/qscxmlc/scxmlcppdumper.cpp64
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> &params,
- QScxmlExecutableContent::ContainerId finalize,
+ const QVector<QScxmlExecutableContent::ParameterInfo> &parameters,
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 &param : params) {
+ for (const auto &parameter : 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> &params,
- QScxmlExecutableContent::ContainerId finalize,
+ const QScxmlExecutableContent::InvokeInfo &invokeInfo,
+ const QVector<QScxmlExecutableContent::StringId> &names,
+ const QVector<QScxmlExecutableContent::ParameterInfo> &parameters,
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)));
}