From aa3595ad5443848c63e51ea4a6766a9a82be65c8 Mon Sep 17 00:00:00 2001 From: Romain Goyet Date: Thu, 24 Mar 2016 15:48:11 +0100 Subject: [PATCH] Poincare: Add a LeafExpression class Parent of Symbol, Integer, Float Change-Id: I866ec888b007ea8e486f5627039f934bddcc9ace --- poincare/Makefile | 11 +++++++---- poincare/include/poincare/float.h | 4 ++-- poincare/include/poincare/integer.h | 4 ++-- poincare/include/poincare/symbol.h | 4 ++-- poincare/src/leaf_expression.cpp | 14 ++++++++++++++ 5 files changed, 27 insertions(+), 10 deletions(-) create mode 100644 poincare/src/leaf_expression.cpp diff --git a/poincare/Makefile b/poincare/Makefile index 8eff7a210..788518f79 100644 --- a/poincare/Makefile +++ b/poincare/Makefile @@ -1,17 +1,19 @@ SFLAGS += -Ipoincare/include objs += $(addprefix poincare/src/,\ addition.o\ + binary_operation.o\ commutative_operation.o\ context.o\ expression.o\ - float.o\ - integer.o\ - fraction.o\ expression_lexer.o\ expression_parser.o\ - subtraction.o\ + float.o\ + fraction.o\ + integer.o\ + leaf_expression.o\ power.o\ product.o\ + subtraction.o\ symbol.o\ ) objs += $(addprefix poincare/src/layout/,\ @@ -31,6 +33,7 @@ tests += $(addprefix poincare/test/,\ integer.cpp\ product.cpp\ simplify.cpp\ + simplify_addition_integer.cpp\ subtraction.cpp\ ) diff --git a/poincare/include/poincare/float.h b/poincare/include/poincare/float.h index e27b7130c..c4e0620c5 100644 --- a/poincare/include/poincare/float.h +++ b/poincare/include/poincare/float.h @@ -1,9 +1,9 @@ #ifndef POINCARE_FLOAT_H #define POINCARE_FLOAT_H -#include +#include -class Float : public Expression { +class Float : public LeafExpression { public: Float(float f); ~Float(); diff --git a/poincare/include/poincare/integer.h b/poincare/include/poincare/integer.h index 6ed4e70e5..94e18e36b 100644 --- a/poincare/include/poincare/integer.h +++ b/poincare/include/poincare/integer.h @@ -1,14 +1,14 @@ #ifndef POINCARE_INTEGER_H #define POINCARE_INTEGER_H -#include +#include #include typedef int32_t native_int_t; typedef uint32_t native_uint_t; typedef uint64_t double_native_uint_t; -class Integer : public Expression { +class Integer : public LeafExpression { public: Integer(native_int_t i); Integer(Integer&& other); // C++11 move constructor diff --git a/poincare/include/poincare/symbol.h b/poincare/include/poincare/symbol.h index 88a85183a..18bb1f835 100644 --- a/poincare/include/poincare/symbol.h +++ b/poincare/include/poincare/symbol.h @@ -1,9 +1,9 @@ #ifndef POINCARE_SYMBOL_H #define POINCARE_SYMBOL_H -#include +#include -class Symbol : public Expression { +class Symbol : public LeafExpression { public: Symbol(char * name); ~Symbol(); diff --git a/poincare/src/leaf_expression.cpp b/poincare/src/leaf_expression.cpp new file mode 100644 index 000000000..e397634b0 --- /dev/null +++ b/poincare/src/leaf_expression.cpp @@ -0,0 +1,14 @@ +#include +extern "C" { +#include +#include +} + +int LeafExpression::numberOfOperands() { + return 0; +} + +Expression * LeafExpression::operand(int i) { + assert(false); + return nullptr; +}