#include "evaluate_context.h" #include 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); } } }