mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-19 05:40:38 +01:00
[poincare] In context: clean setExpressionForSymbol
Change-Id: I13f51a6c84537be43de3b78de68e77fade502344
This commit is contained in:
@@ -18,7 +18,7 @@ Evaluation<double> * LocalContext::ansValue() {
|
||||
return lastCalculation->output(m_parentContext);
|
||||
}
|
||||
|
||||
void LocalContext::setExpressionForSymbolName(Expression * expression, const Symbol * symbol) {
|
||||
void LocalContext::setExpressionForSymbolName(const Expression * expression, const Symbol * symbol) {
|
||||
if (symbol->name() != Symbol::SpecialSymbols::Ans) {
|
||||
m_parentContext->setExpressionForSymbolName(expression, symbol);
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace Calculation {
|
||||
class LocalContext : public Poincare::Context {
|
||||
public:
|
||||
LocalContext(Poincare::GlobalContext * parentContext, CalculationStore * calculationStore);
|
||||
void setExpressionForSymbolName(Poincare::Expression * expression, const Poincare::Symbol * symbol) override;
|
||||
void setExpressionForSymbolName(const Poincare::Expression * expression, const Poincare::Symbol * symbol) override;
|
||||
const Poincare::Expression * expressionForSymbol(const Poincare::Symbol * symbol) override;
|
||||
private:
|
||||
Poincare::Evaluation<double> * ansValue();
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace Poincare {
|
||||
class Context {
|
||||
public:
|
||||
virtual const Expression * expressionForSymbol(const Symbol * symbol) = 0;
|
||||
virtual void setExpressionForSymbolName(Expression * expression, const Symbol * symbol) = 0;
|
||||
virtual void setExpressionForSymbolName(const Expression * expression, const Symbol * symbol) = 0;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ public:
|
||||
return evaluationForSymbol(symbol);
|
||||
}
|
||||
const Evaluation<double> * evaluationForSymbol(const Symbol * symbol);
|
||||
void setExpressionForSymbolName(Expression * expression, const Symbol * symbol) override;
|
||||
void setExpressionForSymbolName(const Expression * expression, const Symbol * symbol) override;
|
||||
static constexpr uint16_t k_maxNumberOfScalarExpressions = 26;
|
||||
static constexpr uint16_t k_maxNumberOfListExpressions = 10;
|
||||
static constexpr uint16_t k_maxNumberOfMatrixExpressions = 10;
|
||||
|
||||
@@ -10,7 +10,7 @@ template<typename T>
|
||||
class VariableContext : public Context {
|
||||
public:
|
||||
VariableContext(char name, Context * parentContext = nullptr);
|
||||
void setExpressionForSymbolName(Expression * expression, const Symbol * symbol) override;
|
||||
void setExpressionForSymbolName(const Expression * expression, const Symbol * symbol) override;
|
||||
const Expression * expressionForSymbol(const Symbol * symbol) override;
|
||||
private:
|
||||
char m_name;
|
||||
|
||||
@@ -64,7 +64,7 @@ const Evaluation<double> * GlobalContext::evaluationForSymbol(const Symbol * sym
|
||||
return m_expressions[index];
|
||||
}
|
||||
|
||||
void GlobalContext::setExpressionForSymbolName(Expression * expression, const Symbol * symbol) {
|
||||
void GlobalContext::setExpressionForSymbolName(const Expression * expression, const Symbol * symbol) {
|
||||
if (symbol->isMatrixSymbol()) {
|
||||
int indexMatrix = symbol->name() - (char)Symbol::SpecialSymbols::M0;
|
||||
assert(indexMatrix >= 0 && indexMatrix < k_maxNumberOfMatrixExpressions);
|
||||
|
||||
@@ -39,7 +39,7 @@ ExpressionLayout * Store::privateCreateLayout(FloatDisplayMode floatDisplayMode,
|
||||
|
||||
template<typename T>
|
||||
Evaluation<T> * Store::templatedEvaluate(Context& context, AngleUnit angleUnit) const {
|
||||
context.setExpressionForSymbolName(const_cast<Expression *>(value()), symbol());
|
||||
context.setExpressionForSymbolName(value(), symbol());
|
||||
if (context.expressionForSymbol(symbol()) != nullptr) {
|
||||
return context.expressionForSymbol(symbol())->evaluate<T>(context, angleUnit);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ VariableContext<T>::VariableContext(char name, Context * parentContext) :
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void VariableContext<T>::setExpressionForSymbolName(Expression * expression, const Symbol * symbol) {
|
||||
void VariableContext<T>::setExpressionForSymbolName(const Expression * expression, const Symbol * symbol) {
|
||||
if (symbol->name() == m_name) {
|
||||
if (expression == nullptr) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user