diff options
Diffstat (limited to 'src/libparser/node/executionnode.cpp')
| -rw-r--r-- | src/libparser/node/executionnode.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/libparser/node/executionnode.cpp b/src/libparser/node/executionnode.cpp index 4545934..096c8fe 100644 --- a/src/libparser/node/executionnode.cpp +++ b/src/libparser/node/executionnode.cpp @@ -40,6 +40,17 @@ ExecutionNode* ExecutionNode::getNextNode() { return m_nextNode; } + +void ExecutionNode::execute(ExecutionNode* previous) +{ + auto errorCount= m_errors.count(); + + run(previous); + + if(m_nextNode && errorCount == m_errors.count()) + m_nextNode->execute(this); +} + QMap<Dice::ERROR_CODE, QString> ExecutionNode::getExecutionErrorMap() { if(nullptr != m_nextNode) @@ -99,3 +110,11 @@ qint64 ExecutionNode::getScalarResult() return 0; return m_result->getResult(Dice::RESULT_TYPE::SCALAR).toInt(); } + +bool ExecutionNode::isValid(bool condition, Dice::ERROR_CODE code, const QString& errorTxt, bool error) +{ + if(condition) + error ? m_errors.insert(code, errorTxt) : m_warnings.insert(code, errorTxt); + + return condition; +} |