mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-03-27 09:40:07 +01:00
[poincare] Correct Expression manipulation
This commit is contained in:
@@ -12,8 +12,14 @@ TreeNode * ExpressionNode::FailedAllocationStaticNode() {
|
||||
|
||||
ExpressionReference ExpressionNode::replaceSymbolWithExpression(char symbol, ExpressionReference expression) {
|
||||
ExpressionReference reference(this);
|
||||
for (int i = 0; i < reference.numberOfChildren(); i++) {
|
||||
reference.replaceTreeChildAtIndex(i, reference.childAtIndex(i).node()->replaceSymbolWithExpression(symbol, expression));
|
||||
int nbChildren = reference.numberOfChildren();
|
||||
for (int i = 0; i < nbChildren; i++) {
|
||||
ExpressionReference newChild = reference.childAtIndex(i).node()->replaceSymbolWithExpression(symbol, expression);
|
||||
if (reference.numberOfChildren() < nbChildren) {
|
||||
reference.addChildTreeAtIndex(newChild, i, nbChildren - 1);
|
||||
} else {
|
||||
reference.replaceTreeChildAtIndex(i, newChild);
|
||||
}
|
||||
}
|
||||
return reference;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user