Files
Upsilon/apps/sequence/local_context.cpp
Émilie Feral 50b21007cb [apps/sequence] Create a local context in sequence to store u(n) and
u(n+1) values

Change-Id: I157e61681aeabd1b4b917149571c786f6d09a16c
2017-03-02 15:35:03 +01:00

48 lines
1.1 KiB
C++

#include "local_context.h"
using namespace Poincare;
namespace Sequence {
LocalContext::LocalContext(Context * parentContext) :
VariableContext('n', parentContext),
m_nValue(Complex::Float(NAN)),
m_n1Value(Complex::Float(NAN))
{
}
const Expression * LocalContext::expressionForSymbol(const Symbol * symbol) {
if (sequenceIndexForSymbol(symbol) == 0) {
return &m_nValue;
}
if (sequenceIndexForSymbol(symbol) == 1) {
return &m_n1Value;
}
return VariableContext::expressionForSymbol(symbol);
}
void LocalContext::setSequenceRankValue(float f, int rank) {
if (rank == 0) {
m_nValue = Complex::Float(f);
}
if (rank == 1) {
m_n1Value = Complex::Float(f);
}
}
char LocalContext::sequenceIndexForSymbol(const Symbol * symbol) {
if (symbol->name() == Symbol::SpecialSymbols::un ||
symbol->name() == Symbol::SpecialSymbols::vn ||
symbol->name() == Symbol::SpecialSymbols::wn) {
return 0;
}
if (symbol->name() == Symbol::SpecialSymbols::un1 ||
symbol->name() == Symbol::SpecialSymbols::vn1 ||
symbol->name() == Symbol::SpecialSymbols::wn1) {
return 1;
}
return 2;
}
}