public:
enum {
expand_indexed = 0x0001, ///< expands (a+b).i to a.i+b.i
- expand_function_args = 0x0002 ///< expands the arguments of functions
+ expand_function_args = 0x0002, ///< expands the arguments of functions
+ expand_rename_idx = 0x0004 ///< used internally by mul::expand()
};
};
class has_options {
public:
enum {
- algebraic = 0x0001, ///< enable algebraic matching
+ algebraic = 0x0001 ///< enable algebraic matching
};
};
evaluated = 0x0002, ///< .eval() has already done its job
expanded = 0x0004, ///< .expand(0) has already done its job (other expand() options ignore this flag)
hash_calculated = 0x0008, ///< .calchash() has already done its job
- not_shareable = 0x0010 ///< don't share instances of this object between different expressions unless explicitly asked to (used by ex::compare())
+ not_shareable = 0x0010, ///< don't share instances of this object between different expressions unless explicitly asked to (used by ex::compare())
+ has_indices = 0x0020,
+ has_no_indices = 0x0040 // ! (has_indices || has_no_indices) means "don't know"
};
};
has_indices, // object has at least one index
// answered by class idx
- idx
+ idx,
+
+ // answered by classes numeric, symbol, add, mul, power
+ expanded
};
};