18 m_numberOfOperands(numberOfOperands)
90 removeOperandAtIndex(i, deleteAfterRemoval);
101 bool isSorted =
true;
105 #if MATRIX_EXACT_REDUCING 132 void DynamicHierarchy::removeOperandAtIndex(
int i,
bool deleteAfterRemoval) {
133 if (deleteAfterRemoval) {
144 int DynamicHierarchy::simplificationOrderSameType(
const Expression * e,
bool canBeInterrupted)
const {
146 int n = e->numberOfOperands();
147 for (
int i = 1; i <= m; i++) {
164 int DynamicHierarchy::simplificationOrderGreaterType(
const Expression * e,
bool canBeInterrupted)
const {
void removeOperand(const Expression *e, bool deleteAfterRemoval=true)
void addOperand(Expression *operand)
Expression * parent() const
Expression * replaceWith(Expression *newOperand, bool deleteAfterReplace=true)
static bool IsMatrix(const Expression *e, Context &context)
bool recursivelyMatches(ExpressionTest test, Context &context) const
void addOperands(const Expression *const *operands, int numberOfOperands)
Expression * squashUnaryHierarchy()
const Expression ** m_operands
virtual Expression * clone() const =0
Expression * editableOperand(int i)
void addOperandAtIndex(Expression *operand, int index)
static int SimplificationOrder(const Expression *e1, const Expression *e2, bool canBeInterrupted=false)
const Expression *const * operands() const override
void mergeOperands(DynamicHierarchy *d)
void setParent(Expression *parent)
void swapOperands(int i, int j)
void sortOperands(ExpressionOrder order, bool canBeInterrupted)
int numberOfOperands() const override
const Expression * operand(int i) const