diff options
| author | 2024-10-23 15:42:08 +0200 | |
|---|---|---|
| committer | 2024-12-29 14:46:30 +0100 | |
| commit | cb1dcb5ee28994a2cd691ad696a5ba4c3c3802ea (patch) | |
| tree | c261de4ad8d0f85aec0200bf500e9579437577df /src/libparser/node/executionnode.cpp | |
| parent | e4dc41cdc3ebb84ef7e42f5cf261e36fe874c901 (diff) | |
| download | OneRoll-cb1dcb5ee28994a2cd691ad696a5ba4c3c3802ea.tar.gz OneRoll-cb1dcb5ee28994a2cd691ad696a5ba4c3c3802ea.zip | |
Add execute node.
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; +} |