mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-21 23:00:45 +01:00
[poincare] TreeNodes have a m_numberOfChildren argument
This commit is contained in:
@@ -22,7 +22,6 @@ 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:
|
||||
|
||||
@@ -22,7 +22,6 @@ 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,7 +22,6 @@ 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
|
||||
|
||||
@@ -24,7 +24,6 @@ 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,7 +28,6 @@ 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,7 +27,6 @@ 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,7 +19,6 @@ 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,7 +39,6 @@ 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,7 +33,6 @@ 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";
|
||||
|
||||
@@ -17,7 +17,6 @@ class GridLayoutNode : public LayoutNode {
|
||||
public:
|
||||
GridLayoutNode() :
|
||||
LayoutNode(),
|
||||
m_numberOfChildren(0),
|
||||
m_numberOfRows(0),
|
||||
m_numberOfColumns(0)
|
||||
{}
|
||||
@@ -40,20 +39,8 @@ 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 {
|
||||
m_numberOfChildren = 0;
|
||||
LayoutNode::eraseNumberOfChildren();
|
||||
m_numberOfRows = 0;
|
||||
m_numberOfColumns = 0;
|
||||
}
|
||||
@@ -76,7 +63,6 @@ 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;
|
||||
|
||||
|
||||
@@ -14,10 +14,7 @@ class HorizontalLayoutNode : public LayoutNode {
|
||||
template <typename T>
|
||||
friend class LayoutReference;
|
||||
public:
|
||||
HorizontalLayoutNode() :
|
||||
LayoutNode(),
|
||||
m_numberOfChildren(0)
|
||||
{}
|
||||
using LayoutNode::LayoutNode;
|
||||
|
||||
// LayoutNode
|
||||
void moveCursorLeft(LayoutCursor * cursor, bool * shouldRecomputeLayout) override;
|
||||
@@ -27,18 +24,11 @@ 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 m_numberOfChildren == 1 && const_cast<HorizontalLayoutNode *>(this)->childAtIndex(0)->isEmpty(); }
|
||||
bool isCollapsable(int * numberOfOpenParenthesis, bool goingLeft) const override { return m_numberOfChildren != 0; }
|
||||
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; }
|
||||
|
||||
// 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";
|
||||
@@ -58,7 +48,6 @@ 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<HorizontalLayoutNode> {
|
||||
|
||||
@@ -29,7 +29,6 @@ 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,10 +12,7 @@ public:
|
||||
constexpr static KDCoordinate k_leftRadixHeight = 8;
|
||||
constexpr static KDCoordinate k_leftRadixWidth = 5;
|
||||
|
||||
NthRootLayoutNode() :
|
||||
LayoutNode(),
|
||||
m_numberOfChildren(0)
|
||||
{}
|
||||
using LayoutNode::LayoutNode;
|
||||
|
||||
// LayoutNode
|
||||
void moveCursorLeft(LayoutCursor * cursor, bool * shouldRecomputeLayout) override;
|
||||
@@ -28,16 +25,7 @@ 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";
|
||||
@@ -60,7 +48,6 @@ private:
|
||||
void render(KDContext * ctx, KDPoint p, KDColor expressionColor, KDColor backgroundColor) override;
|
||||
LayoutNode * radicandLayout() { return childAtIndex(0);}
|
||||
LayoutNode * indexLayout() { return numberOfChildren() > 1 ? childAtIndex(1) : nullptr; }
|
||||
int m_numberOfChildren;
|
||||
};
|
||||
|
||||
class NthRootLayoutRef : public LayoutReference<NthRootLayoutNode> {
|
||||
|
||||
@@ -28,7 +28,6 @@ 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";
|
||||
|
||||
@@ -56,10 +56,12 @@ public:
|
||||
// Hierarchy
|
||||
TreeNode * parentTree() const;
|
||||
TreeNode * rootTree();
|
||||
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 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; }
|
||||
int numberOfDescendants(bool includeSelf) const;
|
||||
TreeNode * childTreeAtIndex(int i) const;
|
||||
int indexOfChildByIdentifier(int childID) const;
|
||||
@@ -176,6 +178,7 @@ protected:
|
||||
private:
|
||||
int m_identifier;
|
||||
int m_referenceCounter;
|
||||
int m_numberOfChildren;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -35,7 +35,6 @@ 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 (m_numberOfChildren > 0) {
|
||||
if (numberOfChildren() > 0) {
|
||||
*index = HorizontalLayoutRef(this).removeEmptyChildBeforeInsertionAtIndex(*index, !childAtIndex(0)->mustHaveLeftSibling(), cursor);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user