Files
Upsilon/apps/calculation/evaluate_context.cpp
Émilie Feral c4ac44838a calculation] Correct ans insertion and evaluation
Change-Id: I3c84735ce43453a3e88db755c283e14311d24ad9
2016-12-08 15:21:52 +01:00

31 lines
833 B
C++

#include "evaluate_context.h"
#include <string.h>
namespace Calculation {
EvaluateContext::EvaluateContext(::Context * parentContext, CalculationStore * calculationStore) :
m_ansValue(Float(0.0f)),
m_calculationStore(calculationStore),
m_context(parentContext)
{
}
Float * EvaluateContext::ansValue() {
if (m_calculationStore->numberOfCalculations() == 0) {
return defaultExpression();
}
Calculation * lastCalculation = m_calculationStore->calculationAtIndex(m_calculationStore->numberOfCalculations()-1);
m_ansValue = Float(lastCalculation->evaluation());
return &m_ansValue;
}
const Expression * EvaluateContext::expressionForSymbol(const Symbol * symbol) {
if (symbol->name() == Symbol::SpecialSymbols::Ans) {
return ansValue();
} else {
return m_context->expressionForSymbol(symbol);
}
}
}