diff --git a/apps/sequence/cache_context.cpp b/apps/sequence/cache_context.cpp index 96fb44608..0645e34e5 100644 --- a/apps/sequence/cache_context.cpp +++ b/apps/sequence/cache_context.cpp @@ -8,9 +8,9 @@ namespace Sequence { template CacheContext::CacheContext(Context * parentContext) : - VariableContext("n", parentContext), m_values{{NAN, NAN}, - {NAN, NAN}} + {NAN, NAN}}, + m_parentContext(parentContext) { } @@ -24,7 +24,12 @@ const Expression CacheContext::expressionForSymbol(const SymbolAbstract & sym Symbol s = const_cast(static_cast(symbol)); return Float::Builder(m_values[nameIndexForSymbol(s)][rankIndexForSymbol(s)]); } - return VariableContext::expressionForSymbol(symbol, clone); + return m_parentContext->expressionForSymbol(symbol, clone); +} + +template +void CacheContext::setExpressionForSymbol(const Expression & expression, const SymbolAbstract & symbol, Context & context) { + m_parentContext->setExpressionForSymbol(expression, symbol, context); } template diff --git a/apps/sequence/cache_context.h b/apps/sequence/cache_context.h index e9dc40560..011596ece 100644 --- a/apps/sequence/cache_context.h +++ b/apps/sequence/cache_context.h @@ -4,21 +4,22 @@ #include #include #include -#include #include "sequence_context.h" namespace Sequence { template -class CacheContext : public Poincare::VariableContext { +class CacheContext : public Poincare::Context { public: CacheContext(Poincare::Context * parentContext); const Poincare::Expression expressionForSymbol(const Poincare::SymbolAbstract & symbol, bool clone) override; + void setExpressionForSymbol(const Poincare::Expression & expression, const Poincare::SymbolAbstract & symbol, Poincare::Context & context) override; void setValueForSymbol(T value, const Poincare::Symbol & symbol); private: int nameIndexForSymbol(const Poincare::Symbol & symbol); int rankIndexForSymbol(const Poincare::Symbol & symbol); T m_values[MaxNumberOfSequences][MaxRecurrenceDepth]; + Context * m_parentContext; }; }