diff --git a/poincare/Makefile b/poincare/Makefile index 94997b971..f5582515b 100644 --- a/poincare/Makefile +++ b/poincare/Makefile @@ -11,6 +11,10 @@ objs += $(addprefix poincare/src/,\ subtraction.o\ undefined.o\ infinity.o\ + integer.o\ + opposite.o\ + decimal.o\ + rational.o\ ) objsExpected += $(addprefix poincare/src/,\ diff --git a/poincare/include/poincare/char_layout_node.h b/poincare/include/poincare/char_layout_node.h index cfbf5878f..45c62f107 100644 --- a/poincare/include/poincare/char_layout_node.h +++ b/poincare/include/poincare/char_layout_node.h @@ -26,8 +26,11 @@ public: int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; bool isCollapsable(int * numberOfOpenParenthesis, bool goingLeft) const override; - // TreeNode + // AllocationFailure static CharLayoutNode * FailedAllocationStaticNode(); + CharLayoutNode * failedAllocationStaticNode() override { return FailedAllocationStaticNode(); } + + // TreeNode size_t size() const override { return sizeof(CharLayoutNode); } int numberOfChildren() const override { return 0; } #if TREE_LOG diff --git a/poincare/include/poincare/fraction_layout_node.h b/poincare/include/poincare/fraction_layout_node.h index e85cf0ab7..caf75c1cc 100644 --- a/poincare/include/poincare/fraction_layout_node.h +++ b/poincare/include/poincare/fraction_layout_node.h @@ -11,6 +11,10 @@ class FractionLayoutNode : public LayoutNode { public: using LayoutNode::LayoutNode; + // AllocationFailure + static FractionLayoutNode * FailedAllocationStaticNode(); + FractionLayoutNode * failedAllocationStaticNode() override { return FailedAllocationStaticNode(); } + // LayoutNode void moveCursorLeft(LayoutCursor * cursor, bool * shouldRecomputeLayout) override; void moveCursorRight(LayoutCursor * cursor, bool * shouldRecomputeLayout) override; @@ -54,7 +58,7 @@ private: class FractionLayoutRef : public LayoutReference { public: FractionLayoutRef(LayoutRef numerator, LayoutRef denominator) : - LayoutReference(TreePool::sharedPool()->createTreeNode(), true) + LayoutReference(TreePool::sharedPool()->createTreeNode()) { replaceChildAtIndexInPlace(0, numerator); replaceChildAtIndexInPlace(1, denominator); diff --git a/poincare/src/fraction_layout_node.cpp b/poincare/src/fraction_layout_node.cpp index 4cc846b42..8c6f7e5e0 100644 --- a/poincare/src/fraction_layout_node.cpp +++ b/poincare/src/fraction_layout_node.cpp @@ -10,6 +10,11 @@ namespace Poincare { static inline KDCoordinate max(KDCoordinate x, KDCoordinate y) { return x > y ? x : y; } +FractionLayoutNode * FractionLayoutNode::FailedAllocationStaticNode() { + static AllocationFailureLayoutNode failure; + return &failure; +} + void FractionLayoutNode::moveCursorLeft(LayoutCursor * cursor, bool * shouldRecomputeLayout) { if (cursor->position() == LayoutCursor::Position::Left && ((numeratorLayout() && cursor->layoutNode() == numeratorLayout()) diff --git a/poincare/src/integer.cpp b/poincare/src/integer.cpp index 7197c0be0..39e4b8ae1 100644 --- a/poincare/src/integer.cpp +++ b/poincare/src/integer.cpp @@ -1,7 +1,7 @@ #include #include #include -//#include +#include #include #include #include