* Collection of all flags used through the GiNaC framework. */
/*
- * GiNaC Copyright (C) 1999-2007 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2010 Johannes Gutenberg University Mainz, Germany
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#ifndef __GINAC_FLAGS_H__
-#define __GINAC_FLAGS_H__
+#ifndef GINAC_FLAGS_H
+#define GINAC_FLAGS_H
namespace GiNaC {
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"
};
};
class info_flags {
public:
enum {
- // answered by class numeric and symbols/constants in particular domains
+ // answered by class numeric, add, mul and symbols/constants in particular domains
numeric,
real,
rational,
has_indices, // object has at least one index
// answered by class idx
- idx
+ idx,
+
+ // answered by classes numeric, symbol, add, mul, power
+ expanded
};
};
};
};
+/** Flags to control the polynomial factorization. */
+class factor_options {
+public:
+ enum {
+ polynomial = 0x0000, ///< factor only expressions that are polynomials
+ all = 0x0001 ///< factor all polynomial subexpressions
+ };
+};
+
} // namespace GiNaC
-#endif // ndef __GINAC_FLAGS_H__
+#endif // ndef GINAC_FLAGS_H