From c627b5067ae3c51b348b4dff401b67d12dbaaaf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Fri, 17 Aug 2018 10:46:05 +0200 Subject: [PATCH] [poincare] Fix Ghost, AllocationF an Uninitilized nodes staticNode methods --- .../allocation_failure_evaluation_node.h | 7 +++++-- .../allocation_failure_expression_node.h | 1 + .../poincare/allocation_failure_layout_node.h | 1 + poincare/include/poincare/ghost_node.h | 17 +---------------- .../poincare/uninitialized_evaluation_node.h | 4 +++- .../poincare/uninitialized_expression_node.h | 4 +++- .../poincare/uninitialized_layout_node.h | 4 +++- poincare/src/ghost_node.cpp | 10 ---------- 8 files changed, 17 insertions(+), 31 deletions(-) diff --git a/poincare/include/poincare/allocation_failure_evaluation_node.h b/poincare/include/poincare/allocation_failure_evaluation_node.h index 963f53444..a9892a798 100644 --- a/poincare/include/poincare/allocation_failure_evaluation_node.h +++ b/poincare/include/poincare/allocation_failure_evaluation_node.h @@ -16,8 +16,11 @@ public: // TreeNode bool isAllocationFailure() const override { return true; } size_t size() const override { return sizeof(AllocationFailureEvaluationNode); } -#if TREE_LOG - const char * description() const override { return "AllocationFailureEvaluation"; } + TreeNode * uninitializedStaticNode() const override { assert(false); return nullptr; } +#if POINCARE_TREE_LOG + virtual void logNodeName(std::ostream & stream) const override { + stream << "AllocationFailureEvaluation"; + } #endif }; diff --git a/poincare/include/poincare/allocation_failure_expression_node.h b/poincare/include/poincare/allocation_failure_expression_node.h index 3a23d394b..f83ba76a5 100644 --- a/poincare/include/poincare/allocation_failure_expression_node.h +++ b/poincare/include/poincare/allocation_failure_expression_node.h @@ -13,6 +13,7 @@ public: // TreeNode size_t size() const override { return sizeof(AllocationFailureExpressionNode); } bool isAllocationFailure() const override { return true; } + TreeNode * uninitializedStaticNode() const override { assert(false); return nullptr; } #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "AllocationFailureExpression["; diff --git a/poincare/include/poincare/allocation_failure_layout_node.h b/poincare/include/poincare/allocation_failure_layout_node.h index 1d4b11fd8..26ceab17c 100644 --- a/poincare/include/poincare/allocation_failure_layout_node.h +++ b/poincare/include/poincare/allocation_failure_layout_node.h @@ -10,6 +10,7 @@ class AllocationFailureLayoutNode : public ExceptionLayoutNode { public: size_t size() const override { return sizeof(AllocationFailureLayoutNode); } bool isAllocationFailure() const override { return true; } + TreeNode * uninitializedStaticNode() const override { assert(false); return nullptr; } #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "AllocationFailureLayout"; diff --git a/poincare/include/poincare/ghost_node.h b/poincare/include/poincare/ghost_node.h index 8495bee49..ac7f4c90f 100644 --- a/poincare/include/poincare/ghost_node.h +++ b/poincare/include/poincare/ghost_node.h @@ -22,22 +22,7 @@ public: static GhostNode * FailedAllocationStaticNode(); TreeNode * failedAllocationStaticNode() override { return FailedAllocationStaticNode(); } // Uninitialized - TreeNode * uninitializedStaticNode() const override; -}; - -class UninitializedGhostNode : public GhostNode { -public: - static UninitializedGhostNode * UninitializedGhostStaticNode(); - - size_t size() const override { return sizeof(UninitializedGhostNode); } - bool isUninitialized() const override { return true; } - GhostNode * failedAllocationStaticNode() override { assert(false); return nullptr; } //TODO ? - int numberOfChildren() const override { return 0; } -#if POINCARE_TREE_LOG - virtual void logNodeName(std::ostream & stream) const override { - stream << "UninitializedGhost"; - } -#endif + TreeNode * uninitializedStaticNode() const override { assert(false); return nullptr; } }; class AllocationFailedGhostNode : public GhostNode { diff --git a/poincare/include/poincare/uninitialized_evaluation_node.h b/poincare/include/poincare/uninitialized_evaluation_node.h index 48eebb964..c2924faee 100644 --- a/poincare/include/poincare/uninitialized_evaluation_node.h +++ b/poincare/include/poincare/uninitialized_evaluation_node.h @@ -16,7 +16,9 @@ public: static UninitializedEvaluationNode * UninitializedEvaluationStaticNode(); // TreeNode bool isUninitialized() const override { return true; } - TreeNode * failedAllocationStaticNode() override { /*TODO*/ assert(false); return nullptr; /* Or call parent method ?*/ } + /* There is only one static node, that should never be inserted in the pool, + * so no need for an allocation failure. */ + TreeNode * failedAllocationStaticNode() override { assert(false); return nullptr; } size_t size() const override { return sizeof(UninitializedEvaluationNode); } #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { diff --git a/poincare/include/poincare/uninitialized_expression_node.h b/poincare/include/poincare/uninitialized_expression_node.h index 27e064c2d..40c25fbd0 100644 --- a/poincare/include/poincare/uninitialized_expression_node.h +++ b/poincare/include/poincare/uninitialized_expression_node.h @@ -26,7 +26,9 @@ public: // TreeNode bool isUninitialized() const override { return true; } - TreeNode * failedAllocationStaticNode() override { /*TODO*/ assert(false); return nullptr; /* Or call parent method ?*/ } + /* There is only one static node, that should never be inserted in the pool, + * so no need for an allocation failure. */ + TreeNode * failedAllocationStaticNode() override { assert(false); return nullptr; } size_t size() const override { return sizeof(UninitializedExpressionNode); } #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { diff --git a/poincare/include/poincare/uninitialized_layout_node.h b/poincare/include/poincare/uninitialized_layout_node.h index 646b38e6e..3e913db9d 100644 --- a/poincare/include/poincare/uninitialized_layout_node.h +++ b/poincare/include/poincare/uninitialized_layout_node.h @@ -61,7 +61,9 @@ public: // TreeNode bool isUninitialized() const override { return true; } - TreeNode * failedAllocationStaticNode() override { /*TODO*/ assert(false); return nullptr; /* Or call parent method ?*/ } + /* There is only one static node, that should never be inserted in the pool, + * so no need for an allocation failure. */ + TreeNode * failedAllocationStaticNode() override { assert(false); return nullptr; } size_t size() const override { return sizeof(UninitializedLayoutNode); } #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { diff --git a/poincare/src/ghost_node.cpp b/poincare/src/ghost_node.cpp index ccf3706e9..9853cdcab 100644 --- a/poincare/src/ghost_node.cpp +++ b/poincare/src/ghost_node.cpp @@ -3,20 +3,10 @@ namespace Poincare { -TreeNode * GhostNode::uninitializedStaticNode() const { - return UninitializedGhostNode::UninitializedGhostStaticNode(); -} - GhostNode * GhostNode::FailedAllocationStaticNode() { static AllocationFailedGhostNode failure; TreePool::sharedPool()->registerStaticNodeIfRequired(&failure); return &failure; } -UninitializedGhostNode * UninitializedGhostNode::UninitializedGhostStaticNode() { - static UninitializedGhostNode exception; - TreePool::sharedPool()->registerStaticNodeIfRequired(&exception); - return &exception; -} - }