Files
Upsilon/apps/calculation/evaluate_context.cpp
Émilie Feral e1f808e7da [apps/calculation] Change names: expression->input, evaluation->output
Change-Id: I9d65a9fc7d1b7132ae3aaa8a86e4511286b7e3da
2016-12-09 11:01:44 +01:00

31 lines
822 B
C++

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