From a202319041b2204f20c0986d33e1334ee74cb817 Mon Sep 17 00:00:00 2001 From: obiwankennedy Date: Tue, 7 Jan 2014 18:56:13 +0100 Subject: Update scalaroperatornode.cpp add scalar result --- node/scalaroperatornode.cpp | 61 +++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 27 deletions(-) (limited to 'node/scalaroperatornode.cpp') diff --git a/node/scalaroperatornode.cpp b/node/scalaroperatornode.cpp index 2df0c04..c1a037a 100644 --- a/node/scalaroperatornode.cpp +++ b/node/scalaroperatornode.cpp @@ -1,15 +1,19 @@ #include "scalaroperatornode.h" #include +#include "diceresult.h" + ScalarOperatorNode::ScalarOperatorNode() - : m_internalNode(NULL) + : m_internalNode(NULL),m_myScalarResult(new ScalarResult()) { m_scalarOperationList.insert('+',PLUS); m_scalarOperationList.insert('-',MINUS); m_scalarOperationList.insert('x',MULTIPLICATION); m_scalarOperationList.insert('*',MULTIPLICATION); m_scalarOperationList.insert('/',DIVIDE); + + m_result = m_myScalarResult; } void ScalarOperatorNode::run(ExecutionNode* previous) @@ -20,36 +24,39 @@ void ScalarOperatorNode::run(ExecutionNode* previous) } if(NULL!=previous) { - DiceResult* previousResult = previous->getResult(); - ExecutionNode* internal = m_internalNode; - while(NULL != internal->getNextNode() ) + DiceResult* previousResult = static_cast(previous->getResult()); + if(NULL!=previousResult) { - internal = internal->getNextNode(); - } - DiceResult* internalResult = internal->getResult(); + ExecutionNode* internal = m_internalNode; + while(NULL != internal->getNextNode() ) + { + internal = internal->getNextNode(); + } + Result* internalResult = internal->getResult(); - switch(m_myOperator) - { - case PLUS: - m_result.insertResult(add(previousResult->getSum(),internalResult->getSum())); - break; - case MINUS: - m_result.insertResult(substract(previousResult->getSum(),internalResult->getSum())); - break; - case MULTIPLICATION: - m_result.insertResult(multiple(previousResult->getSum(),internalResult->getSum())); - break; - case DIVIDE: - m_result.insertResult(divide(previousResult->getSum(),internalResult->getSum())); - break; - default: - break; + switch(m_myOperator) + { + case PLUS: + m_myScalarResult->setValue(add(previousResult->getScalar(),internalResult->getScalar())); + break; + case MINUS: + m_myScalarResult->setValue(substract(previousResult->getScalar(),internalResult->getScalar())); + break; + case MULTIPLICATION: + m_myScalarResult->setValue(multiple(previousResult->getScalar(),internalResult->getScalar())); + break; + case DIVIDE: + m_myScalarResult->setValue(divide(previousResult->getScalar(),internalResult->getScalar())); + break; + default: + break; - } + } - if(NULL!=m_nextNode) - { - m_nextNode->run(this); + if(NULL!=m_nextNode) + { + m_nextNode->run(this); + } } } -- cgit v1.2.3-70-g09d2