aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/libparser/node/scalaroperatornode.cpp
diff options
context:
space:
mode:
authorRenaud Guezennec <renaud@rolisteam.org>2025-03-30 03:56:37 +0200
committerRenaud Guezennec <renaud@rolisteam.org>2025-03-30 03:58:59 +0200
commite18f4a9936d03a112b1a05b24b0559e5be602e0e (patch)
treee5939fba4307e5b00e3444eb82b477f49d09b166 /src/libparser/node/scalaroperatornode.cpp
parent8a3fa044ee7b74be3221717c3f949a10d4e8a178 (diff)
downloadOneRoll-e18f4a9936d03a112b1a05b24b0559e5be602e0e.tar.gz
OneRoll-e18f4a9936d03a112b1a05b24b0559e5be602e0e.zip
[math]: operator priority fix issue.
Diffstat (limited to 'src/libparser/node/scalaroperatornode.cpp')
-rw-r--r--src/libparser/node/scalaroperatornode.cpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/libparser/node/scalaroperatornode.cpp b/src/libparser/node/scalaroperatornode.cpp
index 40f725d..5a5e60b 100644
--- a/src/libparser/node/scalaroperatornode.cpp
+++ b/src/libparser/node/scalaroperatornode.cpp
@@ -21,7 +21,7 @@
***************************************************************************/
#include "scalaroperatornode.h"
-#include "result/diceresult.h"
+#include "include/diceparser/parsingtoolbox.h"
#include <QDebug>
ScalarOperatorNode::ScalarOperatorNode()
@@ -252,7 +252,7 @@ QMap<Dice::ERROR_CODE, QString> ScalarOperatorNode::getExecutionErrorMap()
if(nullptr != m_internalNode)
{
auto keys= m_internalNode->getExecutionErrorMap().keys();
- for(const auto& key : keys)
+ for(const auto& key : std::as_const(keys))
{
m_errors.insert(key, m_internalNode->getExecutionErrorMap().value(key));
}
@@ -260,7 +260,7 @@ QMap<Dice::ERROR_CODE, QString> ScalarOperatorNode::getExecutionErrorMap()
if(nullptr != m_nextNode)
{
auto keys= m_nextNode->getExecutionErrorMap().keys();
- for(auto const& key : keys)
+ for(auto const& key : std::as_const(keys))
{
m_errors.insert(key, m_nextNode->getExecutionErrorMap().value(key));
}
@@ -278,3 +278,15 @@ ExecutionNode* ScalarOperatorNode::getCopy() const
}
return node;
}
+
+void ScalarOperatorNode::setNextNode(ExecutionNode* node)
+{
+ if(node && node->getPriority() > getPriority())
+ {
+ auto temp= m_internalNode;
+ temp= ParsingToolBox::getLeafNode(temp);
+ temp->setNextNode(node);
+ }
+ else
+ ExecutionNode::setNextNode(node);
+}