Revert "[poincare] TreeNodes have a m_numberOfChildren argument"

This reverts commit aa2d58c14a.
This commit is contained in:
Léa Saviot
2018-07-27 16:12:29 +02:00
parent 151fb5065a
commit 2a02afd766
17 changed files with 60 additions and 13 deletions

View File

@@ -22,6 +22,7 @@ public:
// TreeNode
size_t size() const override { return sizeof(AllocationFailedLayoutNode); }
const char * description() const override { return "Allocation Failed"; }
int numberOfChildren() const override { return 0; }
bool isAllocationFailure() const override { return true; }
protected:

View File

@@ -23,6 +23,7 @@ public:
// TreeNode
size_t size() const override { return sizeof(BinomialCoefficientLayoutNode); }
int numberOfChildren() const override { return 2; }
#if TREE_LOG
const char * description() const override {
return "BinomialCoefficientLayout";

View File

@@ -22,6 +22,7 @@ public:
// TreeNode
size_t size() const override { return sizeof(BracketLayoutNode); }
int numberOfChildren() const override { return 0; }
#if TREE_LOG
const char * description() const override { return "BracketLayout"; }
#endif

View File

@@ -26,6 +26,7 @@ public:
// TreeNode
size_t size() const override { return sizeof(BracketPairLayoutNode); }
int numberOfChildren() const override { return 1; }
#if TREE_LOG
const char * description() const override { return "BracketPairLayout"; }
#endif

View File

@@ -28,6 +28,7 @@ public:
// TreeNode
size_t size() const override { return sizeof(CharLayoutNode); }
int numberOfChildren() const override { return 0; }
#if TREE_LOG
const char * description() const override {
static char Description[] = "Char a";

View File

@@ -27,6 +27,7 @@ public:
// TreeNode
size_t size() const override { return sizeof(CondensedSumLayoutNode); }
int numberOfChildren() const override { return 3; }
#if TREE_LOG
const char * description() const override {
return "CondensedSumLayout";

View File

@@ -19,6 +19,7 @@ public:
// TreeNode
size_t size() const override { return sizeof(ConjugateLayoutNode); }
int numberOfChildren() const override { return 1; }
#if TREE_LOG
const char * description() const override {
return "ConjugateLayout";

View File

@@ -39,6 +39,7 @@ public:
// TreeNode
size_t size() const override { return sizeof(EmptyLayoutNode); }
int numberOfChildren() const override { return 0; }
#if TREE_LOG
const char * description() const override { return "Empty"; }
#endif

View File

@@ -33,6 +33,7 @@ public:
// TreeNode
size_t size() const override { return sizeof(FractionLayoutNode); }
int numberOfChildren() const override { return 2; }
#if TREE_LOG
const char * description() const override {
return "FractionLayout";

View File

@@ -19,6 +19,7 @@ class GridLayoutNode : public LayoutNode {
public:
GridLayoutNode() :
LayoutNode(),
m_numberOfChildren(0),
m_numberOfRows(0),
m_numberOfColumns(0)
{}
@@ -41,8 +42,20 @@ public:
// TreeNode
size_t size() const override { return sizeof(GridLayoutNode); }
int numberOfChildren() const override { return m_numberOfChildren; }
void incrementNumberOfChildren(int increment = 1) override {
assert(increment >= 0);
m_numberOfChildren += increment;
}
void decrementNumberOfChildren(int decrement = 1) override {
m_numberOfChildren -= decrement;
if (m_numberOfChildren < 0) {
m_numberOfChildren = 0;
}
}
void eraseNumberOfChildren() override {
LayoutNode::eraseNumberOfChildren();
m_numberOfChildren = 0;
m_numberOfRows = 0;
m_numberOfColumns = 0;
}
@@ -65,6 +78,7 @@ protected:
int rowAtChildIndex(int index) const;
int columnAtChildIndex(int index) const;
int indexAtRowColumn(int rowIndex, int columnIndex) const;
int m_numberOfChildren;
int m_numberOfRows;
int m_numberOfColumns;

View File

@@ -13,7 +13,10 @@ namespace Poincare {
class HorizontalLayoutNode : public LayoutNode {
friend class LayoutReference;
public:
using LayoutNode::LayoutNode;
HorizontalLayoutNode() :
LayoutNode(),
m_numberOfChildren(0)
{}
// LayoutNode
void moveCursorLeft(LayoutCursor * cursor, bool * shouldRecomputeLayout) override;
@@ -23,11 +26,18 @@ public:
int writeTextInBuffer(char * buffer, int bufferSize, PrintFloat::Mode floatDisplayMode, int numberOfSignificantDigits) const override;
bool isHorizontal() const override { return true; }
bool isEmpty() const override { return numberOfChildren() == 1 && const_cast<HorizontalLayoutNode *>(this)->childAtIndex(0)->isEmpty(); }
bool isCollapsable(int * numberOfOpenParenthesis, bool goingLeft) const override { return numberOfChildren() != 0; }
bool isEmpty() const override { return m_numberOfChildren == 1 && const_cast<HorizontalLayoutNode *>(this)->childAtIndex(0)->isEmpty(); }
bool isCollapsable(int * numberOfOpenParenthesis, bool goingLeft) const override { return m_numberOfChildren != 0; }
// TreeNode
size_t size() const override { return sizeof(HorizontalLayoutNode); }
int numberOfChildren() const override { return m_numberOfChildren; }
void incrementNumberOfChildren(int increment = 1) override { m_numberOfChildren+= increment; }
void decrementNumberOfChildren(int decrement = 1) override {
assert(m_numberOfChildren >= decrement);
m_numberOfChildren-= decrement;
}
void eraseNumberOfChildren() override { m_numberOfChildren = 0; }
#if TREE_LOG
const char * description() const override {
return "Horizontal Layout";
@@ -47,6 +57,7 @@ private:
void didRemoveChildAtIndex(int index, LayoutCursor * cursor, bool force) override;
bool willReplaceChild(LayoutNode * oldChild, LayoutNode * newChild, LayoutCursor * cursor, bool force) override;
void render(KDContext * ctx, KDPoint p, KDColor expressionColor, KDColor backgroundColor) override {}
int m_numberOfChildren;
};
class HorizontalLayoutRef : public LayoutReference {

View File

@@ -30,6 +30,7 @@ public:
// TreeNode
size_t size() const override { return sizeof(IntegralLayoutNode); }
int numberOfChildren() const override { return 3; }
#if TREE_LOG
const char * description() const override {
return "IntegralLayout";

View File

@@ -12,7 +12,10 @@ public:
constexpr static KDCoordinate k_leftRadixHeight = 8;
constexpr static KDCoordinate k_leftRadixWidth = 5;
using LayoutNode::LayoutNode;
NthRootLayoutNode() :
LayoutNode(),
m_numberOfChildren(0)
{}
// LayoutNode
void moveCursorLeft(LayoutCursor * cursor, bool * shouldRecomputeLayout) override;
@@ -25,7 +28,16 @@ public:
bool hasUpperLeftIndex() const override { return numberOfChildren() > 1; }
// TreeNode
void incrementNumberOfChildren(int increment = 1) override {
assert(increment == 1);
m_numberOfChildren+= increment;
}
void decrementNumberOfChildren(int decrement = 1) override {
assert(m_numberOfChildren >= decrement);
m_numberOfChildren-= decrement;
}
size_t size() const override { return sizeof(NthRootLayoutNode); }
int numberOfChildren() const override { return m_numberOfChildren; }
#if TREE_LOG
const char * description() const override {
return "NthRootLayout";
@@ -54,6 +66,7 @@ private:
assert(numberOfChildren() == 1 || numberOfChildren() == 2);
return numberOfChildren() == 2 ? childAtIndex(1) : nullptr;
}
int m_numberOfChildren;
};
class NthRootLayoutRef : public LayoutReference {

View File

@@ -28,6 +28,7 @@ public:
// TreeNode
size_t size() const override { return sizeof(SequenceLayoutNode); }
int numberOfChildren() const override { return 3; }
#if TREE_LOG
const char * description() const override {
return "Sequence Layout";

View File

@@ -53,12 +53,10 @@ public:
// Hierarchy
TreeNode * parent() const;
TreeNode * root();
int numberOfChildren() const { return m_numberOfChildren; }
void incrementNumberOfChildren(int increment = 1) { m_numberOfChildren += increment; }
void decrementNumberOfChildren(int decrement = 1) {
m_numberOfChildren = m_numberOfChildren > decrement ? m_numberOfChildren - decrement : 0;
}
virtual void eraseNumberOfChildren() { m_numberOfChildren = 0; }
virtual int numberOfChildren() const = 0;
virtual void incrementNumberOfChildren(int increment = 1) {} // Do no put an assert(false), we need this method for instance in GridLayout::removeRow
virtual void decrementNumberOfChildren(int decrement = 1) {} // Do no put an assert(false), we need this method for instance in GridLayout::removeRow
virtual void eraseNumberOfChildren() {} //TODO Put an assert false //TODO what if somebody i stealing a unary tree's only child ?
int numberOfDescendants(bool includeSelf) const;
TreeNode * childAtIndex(int i) const;
int indexOfChildByIdentifier(int childID) const;
@@ -175,7 +173,6 @@ protected:
private:
int m_identifier;
int m_referenceCounter;
int m_numberOfChildren;
};
}

View File

@@ -35,6 +35,7 @@ public:
// TreeNode
size_t size() const override { return sizeof(VerticalOffsetLayoutNode); }
int numberOfChildren() const override { return 1; }
#if TREE_LOG
const char * description() const override {
return m_type == Type::Subscript ? "Subscript" : "Superscript";

View File

@@ -217,7 +217,7 @@ KDPoint HorizontalLayoutNode::positionOfChild(LayoutNode * l) {
// Private
bool HorizontalLayoutNode::willAddChildAtIndex(LayoutNode * l, int * index, LayoutCursor * cursor) {
if (numberOfChildren() > 0) {
if (m_numberOfChildren > 0) {
*index = HorizontalLayoutRef(this).removeEmptyChildBeforeInsertionAtIndex(*index, !childAtIndex(0)->mustHaveLeftSibling(), cursor);
}