From 2937907080837fe26b41877516f5cef52a195f84 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Thu, 24 Nov 2016 17:14:23 +0100 Subject: Drop the return value from QScxmlDataModel::evaluateForEach() This is an inconsistency in the public API. The bool return value is unnecessary as we pass a bool *ok, just like we do for the other evaluation methods. Change-Id: I750e5d6d39df417fec727ef6f3ec1ade5ddc2dfc Reviewed-by: Jarek Kobus --- src/scxml/qscxmlcppdatamodel.cpp | 3 +-- src/scxml/qscxmlcppdatamodel.h | 2 +- src/scxml/qscxmldatamodel.h | 4 ++-- src/scxml/qscxmlecmascriptdatamodel.cpp | 18 +++++++++--------- src/scxml/qscxmlecmascriptdatamodel.h | 2 +- src/scxml/qscxmlexecutablecontent.cpp | 8 +++----- src/scxml/qscxmlnulldatamodel.cpp | 3 +-- src/scxml/qscxmlnulldatamodel.h | 2 +- 8 files changed, 19 insertions(+), 23 deletions(-) diff --git a/src/scxml/qscxmlcppdatamodel.cpp b/src/scxml/qscxmlcppdatamodel.cpp index bc09d65..d363c27 100644 --- a/src/scxml/qscxmlcppdatamodel.cpp +++ b/src/scxml/qscxmlcppdatamodel.cpp @@ -167,13 +167,12 @@ void QScxmlCppDataModel::evaluateInitialization(EvaluatorId id, bool *ok) Q_UNREACHABLE(); } -bool QScxmlCppDataModel::evaluateForeach(EvaluatorId id, bool *ok, ForeachLoopBody *body) +void QScxmlCppDataModel::evaluateForeach(EvaluatorId id, bool *ok, ForeachLoopBody *body) { Q_UNUSED(id); Q_UNUSED(ok); Q_UNUSED(body); Q_UNREACHABLE(); - return false; } /*! diff --git a/src/scxml/qscxmlcppdatamodel.h b/src/scxml/qscxmlcppdatamodel.h index fb59336..97ca636 100644 --- a/src/scxml/qscxmlcppdatamodel.h +++ b/src/scxml/qscxmlcppdatamodel.h @@ -66,7 +66,7 @@ public: #ifndef Q_QDOC void evaluateAssignment(QScxmlExecutableContent::EvaluatorId id, bool *ok) Q_DECL_OVERRIDE Q_DECL_FINAL; void evaluateInitialization(QScxmlExecutableContent::EvaluatorId id, bool *ok) Q_DECL_OVERRIDE Q_DECL_FINAL; - bool evaluateForeach(QScxmlExecutableContent::EvaluatorId id, bool *ok, ForeachLoopBody *body) Q_DECL_OVERRIDE Q_DECL_FINAL; + void evaluateForeach(QScxmlExecutableContent::EvaluatorId id, bool *ok, ForeachLoopBody *body) Q_DECL_OVERRIDE Q_DECL_FINAL; #endif // Q_QDOC void setScxmlEvent(const QScxmlEvent &scxmlEvent) Q_DECL_OVERRIDE Q_DECL_FINAL; diff --git a/src/scxml/qscxmldatamodel.h b/src/scxml/qscxmldatamodel.h index 845d8bf..9f2b921 100644 --- a/src/scxml/qscxmldatamodel.h +++ b/src/scxml/qscxmldatamodel.h @@ -64,7 +64,7 @@ public: { public: virtual ~ForeachLoopBody(); - virtual bool run() = 0; + virtual void run(bool *ok) = 0; }; public: @@ -83,7 +83,7 @@ public: virtual void evaluateToVoid(QScxmlExecutableContent::EvaluatorId id, bool *ok) = 0; virtual void evaluateAssignment(QScxmlExecutableContent::EvaluatorId id, bool *ok) = 0; virtual void evaluateInitialization(QScxmlExecutableContent::EvaluatorId id, bool *ok) = 0; - virtual bool evaluateForeach(QScxmlExecutableContent::EvaluatorId id, bool *ok, ForeachLoopBody *body) = 0; + virtual void evaluateForeach(QScxmlExecutableContent::EvaluatorId id, bool *ok, ForeachLoopBody *body) = 0; #endif // Q_QDOC virtual void setScxmlEvent(const QScxmlEvent &event) = 0; diff --git a/src/scxml/qscxmlecmascriptdatamodel.cpp b/src/scxml/qscxmlecmascriptdatamodel.cpp index 32c49f0..4b0329e 100644 --- a/src/scxml/qscxmlecmascriptdatamodel.cpp +++ b/src/scxml/qscxmlecmascriptdatamodel.cpp @@ -469,7 +469,7 @@ void QScxmlEcmaScriptDataModel::evaluateInitialization(EvaluatorId id, bool *ok) evaluateAssignment(id, ok); } -bool QScxmlEcmaScriptDataModel::evaluateForeach(EvaluatorId id, bool *ok, ForeachLoopBody *body) +void QScxmlEcmaScriptDataModel::evaluateForeach(EvaluatorId id, bool *ok, ForeachLoopBody *body) { Q_D(QScxmlEcmaScriptDataModel); Q_ASSERT(ok); @@ -480,7 +480,7 @@ bool QScxmlEcmaScriptDataModel::evaluateForeach(EvaluatorId id, bool *ok, Foreac if (!jsArray.isArray()) { d->submitError(QStringLiteral("error.execution"), QStringLiteral("invalid array '%1' in %2").arg(d->string(info.array), d->string(info.context))); *ok = false; - return false; + return; } QString item = d->string(info.item); @@ -490,7 +490,7 @@ bool QScxmlEcmaScriptDataModel::evaluateForeach(EvaluatorId id, bool *ok, Foreac d->submitError(QStringLiteral("error.execution"), QStringLiteral("invalid item '%1' in %2") .arg(d->string(info.item), d->string(info.context))); *ok = false; - return false; + return; } const int length = jsArray.property(QStringLiteral("length")).toInt(); @@ -502,17 +502,17 @@ bool QScxmlEcmaScriptDataModel::evaluateForeach(EvaluatorId id, bool *ok, Foreac QJSValue currentItem = jsArray.property(static_cast(currentIndex)); *ok = d->setProperty(item, currentItem, context); if (!*ok) - return false; + return; if (hasIndex) { *ok = d->setProperty(idx, currentIndex, context); if (!*ok) - return false; + return; } - if (!body->run()) - return false; + body->run(ok); + if (!*ok) + return; } - - return true; + *ok = true; } /*! diff --git a/src/scxml/qscxmlecmascriptdatamodel.h b/src/scxml/qscxmlecmascriptdatamodel.h index b1d9f55..808830a 100644 --- a/src/scxml/qscxmlecmascriptdatamodel.h +++ b/src/scxml/qscxmlecmascriptdatamodel.h @@ -63,7 +63,7 @@ public: void evaluateToVoid(QScxmlExecutableContent::EvaluatorId id, bool *ok) Q_DECL_OVERRIDE Q_DECL_FINAL; void evaluateAssignment(QScxmlExecutableContent::EvaluatorId id, bool *ok) Q_DECL_OVERRIDE Q_DECL_FINAL; void evaluateInitialization(QScxmlExecutableContent::EvaluatorId id, bool *ok) Q_DECL_OVERRIDE Q_DECL_FINAL; - bool evaluateForeach(QScxmlExecutableContent::EvaluatorId id, bool *ok, ForeachLoopBody *body) Q_DECL_OVERRIDE Q_DECL_FINAL; + void evaluateForeach(QScxmlExecutableContent::EvaluatorId id, bool *ok, ForeachLoopBody *body) Q_DECL_OVERRIDE Q_DECL_FINAL; #endif // Q_QDOC void setScxmlEvent(const QScxmlEvent &event) Q_DECL_OVERRIDE; diff --git a/src/scxml/qscxmlexecutablecontent.cpp b/src/scxml/qscxmlexecutablecontent.cpp index 5df8b1f..9fbcd15 100644 --- a/src/scxml/qscxmlexecutablecontent.cpp +++ b/src/scxml/qscxmlexecutablecontent.cpp @@ -216,11 +216,9 @@ const InstructionId *QScxmlExecutionEngine::step(const InstructionId *ip, bool * , loopStart(loopStart) {} - bool run() Q_DECL_OVERRIDE + void run(bool *ok) Q_DECL_OVERRIDE { - bool ok = true; - engine->step(loopStart, &ok); - return ok; + engine->step(loopStart, ok); } }; @@ -229,7 +227,7 @@ const InstructionId *QScxmlExecutionEngine::step(const InstructionId *ip, bool * const InstructionId *loopStart = _foreach->blockstart(); ip += _foreach->size(); LoopBody body(this, loopStart); - *ok = dataModel->evaluateForeach(_foreach->doIt, ok, &body) && *ok; + dataModel->evaluateForeach(_foreach->doIt, ok, &body); return ip; } diff --git a/src/scxml/qscxmlnulldatamodel.cpp b/src/scxml/qscxmlnulldatamodel.cpp index 08a9333..35f1b91 100644 --- a/src/scxml/qscxmlnulldatamodel.cpp +++ b/src/scxml/qscxmlnulldatamodel.cpp @@ -203,7 +203,7 @@ void QScxmlNullDataModel::evaluateInitialization(QScxmlExecutableContent::Evalua QStringLiteral("Cannot initialize values on a null data model")); } -bool QScxmlNullDataModel::evaluateForeach(QScxmlExecutableContent::EvaluatorId id, bool *ok, ForeachLoopBody *body) +void QScxmlNullDataModel::evaluateForeach(QScxmlExecutableContent::EvaluatorId id, bool *ok, ForeachLoopBody *body) { Q_UNUSED(id); Q_UNUSED(body); @@ -211,7 +211,6 @@ bool QScxmlNullDataModel::evaluateForeach(QScxmlExecutableContent::EvaluatorId i QScxmlStateMachinePrivate::get(stateMachine())->submitError( QStringLiteral("error.execution"), QStringLiteral("Cannot run foreach on a null data model")); - return false; } /*! diff --git a/src/scxml/qscxmlnulldatamodel.h b/src/scxml/qscxmlnulldatamodel.h index e4f7942..f5aeb26 100644 --- a/src/scxml/qscxmlnulldatamodel.h +++ b/src/scxml/qscxmlnulldatamodel.h @@ -62,7 +62,7 @@ public: void evaluateToVoid(QScxmlExecutableContent::EvaluatorId id, bool *ok) Q_DECL_OVERRIDE Q_DECL_FINAL; void evaluateAssignment(QScxmlExecutableContent::EvaluatorId id, bool *ok) Q_DECL_OVERRIDE Q_DECL_FINAL; void evaluateInitialization(QScxmlExecutableContent::EvaluatorId id, bool *ok) Q_DECL_OVERRIDE Q_DECL_FINAL; - bool evaluateForeach(QScxmlExecutableContent::EvaluatorId id, bool *ok, ForeachLoopBody *body) Q_DECL_OVERRIDE Q_DECL_FINAL; + void evaluateForeach(QScxmlExecutableContent::EvaluatorId id, bool *ok, ForeachLoopBody *body) Q_DECL_OVERRIDE Q_DECL_FINAL; #endif // Q_QDOC void setScxmlEvent(const QScxmlEvent &event) Q_DECL_OVERRIDE; -- cgit v1.2.3