diff --git a/poincare/include/poincare/expression.h b/poincare/include/poincare/expression.h index a35894c5b..664ce6a64 100644 --- a/poincare/include/poincare/expression.h +++ b/poincare/include/poincare/expression.h @@ -29,7 +29,7 @@ class Expression { /* identicalTo means strictly the same tree. For example, 3+5 is NOT identi- * cal to 5+3. Those are equal, but not identical. */ - //virtual bool identicalTo(Expression * e); + bool isIdenticalTo(Expression * e); Expression * simplify(); virtual Type type() = 0; diff --git a/poincare/src/expression.cpp b/poincare/src/expression.cpp index 10b9e5e0a..53cb3d67a 100644 --- a/poincare/src/expression.cpp +++ b/poincare/src/expression.cpp @@ -43,3 +43,14 @@ Expression * Expression::simplify() { return result; } +bool Expression::isIdenticalTo(Expression * e) { + if (e->type() != this->type() || e->numberOfOperands() != this->numberOfOperands()) { + return false; + } + for (int i=0; inumberOfOperands(); i++) { + if (!e->operand(i)->isIdenticalTo(this->operand(i))) { + return false; + } + } + return true; +}