#include #include #include #include namespace Poincare { template VariableContext::VariableContext(char name, Context * parentContext) : m_name(name), m_value(Float(NAN)), m_parentContext(parentContext) { } template void VariableContext::setApproximationForVariable(T value) { m_value = Float(value); } template void VariableContext::setExpressionForSymbolName(const Expression & expression, const Symbol & symbol, Context & context) { if (symbol.name() == m_name) { if (expression.isUninitialized()) { return; } m_value = Float(expression.approximateToScalar(context, Preferences::sharedPreferences()->angleUnit())); } else { m_parentContext->setExpressionForSymbolName(expression, symbol, context); } } template const Expression VariableContext::expressionForSymbol(const Symbol & symbol) { if (symbol.name() == m_name) { return m_value; } else { return m_parentContext->expressionForSymbol(symbol); } } template class Poincare::VariableContext; template class Poincare::VariableContext; }