mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-21 23:00:45 +01:00
Revert "[poincare] TreeNodes have a m_numberOfChildren argument"
This reverts commit aa2d58c14a.
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user