diff options
| -rw-r--r-- | node/scalaroperatornode.cpp | 107 |
1 files changed, 50 insertions, 57 deletions
diff --git a/node/scalaroperatornode.cpp b/node/scalaroperatornode.cpp index 17ddecb..1c8ce4e 100644 --- a/node/scalaroperatornode.cpp +++ b/node/scalaroperatornode.cpp @@ -28,21 +28,15 @@ ScalarOperatorNode::ScalarOperatorNode() : m_internalNode(nullptr),m_scalarResult(new ScalarResult()),m_arithmeticOperator(Die::PLUS) { - /*m_scalarOperationList.insert('+',PLUS); - m_scalarOperationList.insert('-',MINUS); - m_scalarOperationList.insert('x',MULTIPLICATION); - m_scalarOperationList.insert('*',MULTIPLICATION); - m_scalarOperationList.insert('/',DIVIDE);*/ - m_result = m_scalarResult; } ScalarOperatorNode::~ScalarOperatorNode() { - if(nullptr!=m_internalNode) - { - delete m_internalNode; - m_internalNode = nullptr; - } + if(nullptr!=m_internalNode) + { + delete m_internalNode; + m_internalNode = nullptr; + } } void ScalarOperatorNode::run(ExecutionNode* previous) @@ -50,32 +44,31 @@ void ScalarOperatorNode::run(ExecutionNode* previous) m_previousNode = previous; if(nullptr!=m_internalNode) { - m_internalNode->run(this); + m_internalNode->run(this); } if(nullptr!=previous) { - DiceResult* previousResult = dynamic_cast<DiceResult*>(previous->getResult()); + auto previousResult = previous->getResult(); if(nullptr!=previousResult) { ExecutionNode* internal = m_internalNode; if(nullptr != internal) { - while(nullptr != internal->getNextNode() ) - { + while(nullptr != internal->getNextNode() ) + { internal = internal->getNextNode(); - } + } + Result* internalResult = internal->getResult(); + m_result->setPrevious(internalResult); + if(nullptr!=m_internalNode->getResult()) + { + m_internalNode->getResult()->setPrevious(previousResult); + } - Result* internalResult = internal->getResult(); - m_result->setPrevious(internalResult); - if(nullptr!=m_internalNode->getResult()) - { - m_internalNode->getResult()->setPrevious(previousResult); - } - - switch(m_arithmeticOperator) - { + switch(m_arithmeticOperator) + { case Die::PLUS: m_scalarResult->setValue(add(previousResult->getResult(Result::SCALAR).toReal(),internalResult->getResult(Result::SCALAR).toReal())); break; @@ -91,7 +84,7 @@ void ScalarOperatorNode::run(ExecutionNode* previous) default: break; - } + } } if(nullptr!=m_nextNode) @@ -106,7 +99,7 @@ void ScalarOperatorNode::run(ExecutionNode* previous) { if(m_scalarOperationList.contains(c)) { - m_operator = m_scalarOperationList.value(c); + m_operator = m_scalarOperationList.value(c); return true; } return false; @@ -157,64 +150,64 @@ QString ScalarOperatorNode::toString(bool wl) const break; case Die::MINUS: op="-"; - break; - case Die::MULTIPLICATION: - op="*"; - break; - case Die::DIVIDE: - op="/"; - break; - default: - break; + break; + case Die::MULTIPLICATION: + op="*"; + break; + case Die::DIVIDE: + op="/"; + break; + default: + break; } - if(wl) - { - return QString("%1 [label=\"ScalarOperatorNode %2\"]").arg(m_id).arg(op); - } - else - { - return m_id; - } + if(wl) + { + return QString("%1 [label=\"ScalarOperatorNode %2\"]").arg(m_id).arg(op); + } + else + { + return m_id; + } } qint64 ScalarOperatorNode::getPriority() const { if((m_arithmeticOperator==Die::PLUS)||(m_arithmeticOperator==Die::MINUS)) - { + { return 1; - } + } else - { + { return 2; - } + } } void ScalarOperatorNode::generateDotTree(QString& s) { - s.append(toString(true)); - s.append(";\n"); + s.append(toString(true)); + s.append(";\n"); if(nullptr!=m_nextNode) { - s.append(toString(false)); + s.append(toString(false)); s.append(" -> "); - s.append(m_nextNode->toString(false)); + s.append(m_nextNode->toString(false)); s.append("[label=\"nextNode\"];\n"); m_nextNode->generateDotTree(s); } else { - s.append(toString(false)); + s.append(toString(false)); s.append(" -> "); - s.append("nullptr"); - s.append(" [label=\"nextNode\"];\n"); + s.append("nullptr"); + s.append(" [label=\"nextNode\"];\n"); } QString str; str.append("\n"); if(nullptr!=m_internalNode) { - str.append(toString(false)); + str.append(toString(false)); str.append(" -> "); - str.append(m_internalNode->toString(false)); + str.append(m_internalNode->toString(false)); str.append(" [label=\"internalNode\"];\n"); m_internalNode->generateDotTree(str); } |