From 169d6bf94d516849637f8da4c8b58c991e31fae2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Tue, 31 Mar 2020 12:17:39 +0200 Subject: [PATCH] [poincare/parametered_expression] Use parameter() --- poincare/src/parametered_expression.cpp | 14 +++++--------- poincare/src/symbol.cpp | 11 ++++------- 2 files changed, 9 insertions(+), 16 deletions(-) diff --git a/poincare/src/parametered_expression.cpp b/poincare/src/parametered_expression.cpp index a8d06abcb..b6b9258db 100644 --- a/poincare/src/parametered_expression.cpp +++ b/poincare/src/parametered_expression.cpp @@ -21,11 +21,9 @@ int ParameteredExpressionNode::getVariables(Context * context, isVariableTest is } /* Remove the parameter symbol from the list of variable if it was added at * the previous line */ - // Get the parameter symbol - assert(childAtIndex(ParameteredExpression::ParameterChildIndex())->type() == ExpressionNode::Type::Symbol); - SymbolNode * parameterChild = static_cast(childAtIndex(ParameteredExpression::ParameterChildIndex())); + const char * parameterName = ParameteredExpression(this).parameter().name(); for (int i = nextVariableIndex; i < numberOfVariables; i++) { - if (strcmp(parameterChild->name(), &variables[i]) == 0) { + if (strcmp(parameterName, &variables[i]) == 0) { variables[i] = 0; numberOfVariables--; break; @@ -46,11 +44,9 @@ int ParameteredExpressionNode::getVariables(Context * context, isVariableTest is } Expression ParameteredExpression::replaceSymbolWithExpression(const SymbolAbstract & symbol, const Expression & expression) { - Expression c = childAtIndex(ParameterChildIndex()); - assert(c.type() == ExpressionNode::Type::Symbol); - Symbol& parameterChild = static_cast(c); - if (symbol.type() != ExpressionNode::Type::Symbol || - strcmp(symbol.name(), parameterChild.name()) != 0) { + if (symbol.type() != ExpressionNode::Type::Symbol + || !parameter().hasSameNameAs(static_cast(symbol))) + { // If the symbol is not the parameter, replace normally return defaultReplaceSymbolWithExpression(symbol, expression); } diff --git a/poincare/src/symbol.cpp b/poincare/src/symbol.cpp index 58df963d9..50637fd65 100644 --- a/poincare/src/symbol.cpp +++ b/poincare/src/symbol.cpp @@ -173,13 +173,10 @@ Expression Symbol::shallowReduce(ExpressionNode::ReductionContext reductionConte // The symbol is a paremetered expression's parameter return *this; } - if (index == ParameteredExpression::ParameteredChildIndex()) { - assert(p.childAtIndex(ParameteredExpression::ParameterChildIndex()).type() == ExpressionNode::Type::Symbol); - Expression untypedParameter = p.childAtIndex(ParameteredExpression::ParameterChildIndex()); - Symbol parameter = static_cast(untypedParameter); - if (strcmp(parameter.name(), name()) == 0) { - return *this; - } + if (index == ParameteredExpression::ParameteredChildIndex() + && hasSameNameAs(static_cast(p).parameter())) + { + return *this; } } current = p;