From ea1af0cfda7b10131eadb9fc2a6320a72256c5ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Tue, 28 Nov 2017 11:44:15 +0100 Subject: [PATCH] [poincare] Clean global context Change-Id: I52eb6d6bdd4288700a6d22ca2835f6190b4bde82 --- poincare/src/global_context.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/poincare/src/global_context.cpp b/poincare/src/global_context.cpp index a55a4edf4..fcecae12c 100644 --- a/poincare/src/global_context.cpp +++ b/poincare/src/global_context.cpp @@ -45,8 +45,13 @@ Complex * GlobalContext::defaultExpression() { } int GlobalContext::symbolIndex(const Symbol * symbol) const { - int index = symbol->name() - 'A'; - return index; + if (symbol->isMatrixSymbol()) { + return symbol->name() - (char)Symbol::SpecialSymbols::M0; + } + if (symbol->isScalarSymbol()) { + return symbol->name() - 'A'; + } + return -1; } const Expression * GlobalContext::expressionForSymbol(const Symbol * symbol) { @@ -59,11 +64,10 @@ const Expression * GlobalContext::expressionForSymbol(const Symbol * symbol) { if (symbol->name() == Ion::Charset::IComplex) { return &m_i; } - if (symbol->isMatrixSymbol()) { - int indexMatrix = symbol->name() - (char)Symbol::SpecialSymbols::M0; - return m_matrixExpressions[indexMatrix]; - } int index = symbolIndex(symbol); + if (symbol->isMatrixSymbol()) { + return m_matrixExpressions[index]; + } if (index < 0 || index >= k_maxNumberOfScalarExpressions) { return nullptr; } @@ -74,7 +78,8 @@ const Expression * GlobalContext::expressionForSymbol(const Symbol * symbol) { } void GlobalContext::setExpressionForSymbolName(const Expression * expression, const Symbol * symbol, Context & context) { - if (symbol->isMatrixSymbol()) { + int index = symbolIndex(symbol); + if (symbol->isMatrixSymbol()) { int indexMatrix = symbol->name() - (char)Symbol::SpecialSymbols::M0; assert(indexMatrix >= 0 && indexMatrix < k_maxNumberOfMatrixExpressions); Expression * evaluation = expression ? expression->approximate(context) : nullptr; // evaluate before deleting anything (to be able to evaluate M1+2->M1) @@ -91,7 +96,6 @@ void GlobalContext::setExpressionForSymbolName(const Expression * expression, co } return; } - int index = symbolIndex(symbol); if (index < 0 || index >= k_maxNumberOfScalarExpressions) { return; }