aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/libparser/node/executionnode.cpp
diff options
context:
space:
mode:
authorRenaud Guezennec <renaud@rolisteam.org>2024-10-23 15:42:08 +0200
committerRenaud Guezennec <renaud@rolisteam.org>2024-12-29 14:46:30 +0100
commitcb1dcb5ee28994a2cd691ad696a5ba4c3c3802ea (patch)
treec261de4ad8d0f85aec0200bf500e9579437577df /src/libparser/node/executionnode.cpp
parente4dc41cdc3ebb84ef7e42f5cf261e36fe874c901 (diff)
downloadOneRoll-cb1dcb5ee28994a2cd691ad696a5ba4c3c3802ea.tar.gz
OneRoll-cb1dcb5ee28994a2cd691ad696a5ba4c3c3802ea.zip
Add execute node.
Diffstat (limited to 'src/libparser/node/executionnode.cpp')
-rw-r--r--src/libparser/node/executionnode.cpp19
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;
+}