From a8feaefe8279b0aaa43587781ff87c670b8043d4 Mon Sep 17 00:00:00 2001 From: Romain Goyet Date: Sat, 26 Mar 2016 21:04:04 +0100 Subject: [PATCH] Poincare: Add a Simplification class Change-Id: Ide99e912262111722e11ae82dbc7eedb591ba14c --- poincare/Makefile | 1 + poincare/src/simplify/expression_selector.h | 9 --------- poincare/src/simplify/simplification.cpp | 10 ++++++++++ poincare/src/simplify/simplification.h | 15 +++++++++++++++ 4 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 poincare/src/simplify/simplification.cpp create mode 100644 poincare/src/simplify/simplification.h diff --git a/poincare/Makefile b/poincare/Makefile index 6047d7b6a..190844c66 100644 --- a/poincare/Makefile +++ b/poincare/Makefile @@ -34,6 +34,7 @@ objs += $(addprefix poincare/src/simplify/,\ simplify_product_zero.o\ expression_selector.o\ expression_builder.o\ + simplification.o\ ) tests += $(addprefix poincare/test/,\ addition.cpp\ diff --git a/poincare/src/simplify/expression_selector.h b/poincare/src/simplify/expression_selector.h index 8b3c055db..f9bad9ad6 100644 --- a/poincare/src/simplify/expression_selector.h +++ b/poincare/src/simplify/expression_selector.h @@ -41,13 +41,4 @@ public: uint8_t m_numberOfChildren; }; -/* -{ - my_tree_selector, my_expression_builder; - if (my_tree_selector->match(my_expression)) { - my_expression_builder->build(my_expression, *matchedData); - } -} -*/ - #endif diff --git a/poincare/src/simplify/simplification.cpp b/poincare/src/simplify/simplification.cpp new file mode 100644 index 000000000..3c578bfe7 --- /dev/null +++ b/poincare/src/simplify/simplification.cpp @@ -0,0 +1,10 @@ +#include "simplification.h" + +Expression * Simplification::simplify(Expression * expression) const { + Expression * matches[255]; //FIXME: The sized ca be given by our compiler + if (m_selector->match(expression, matches)) { + return m_builder->build(matches); + } else { + return nullptr; + } +} diff --git a/poincare/src/simplify/simplification.h b/poincare/src/simplify/simplification.h new file mode 100644 index 000000000..7e89dbc0d --- /dev/null +++ b/poincare/src/simplify/simplification.h @@ -0,0 +1,15 @@ +#ifndef POINCARE_SIMPLIFY_SIMPLIFICATION_H +#define POINCARE_SIMPLIFY_SIMPLIFICATION_H + +#include +#include "expression_selector.h" +#include "expression_builder.h" + +class Simplification { +public: + ExpressionSelector * m_selector; + ExpressionBuilder * m_builder; + Expression * simplify(Expression * expression) const; +}; + +#endif