X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fflags.h;h=a416958d1511a7133b09ece92a8adeebfd2b1ba7;hp=35cb6e3b0803e62323d09aa5cad55baf2960734c;hb=09403bb1127f7ef58dce7b669e681c74dd77eaed;hpb=80355fb3d929ecec98171db7a0286b8eda877669 diff --git a/ginac/flags.h b/ginac/flags.h index 35cb6e3b..a416958d 100644 --- a/ginac/flags.h +++ b/ginac/flags.h @@ -3,7 +3,7 @@ * Collection of all flags used through the GiNaC framework. */ /* - * GiNaC Copyright (C) 1999-2003 Johannes Gutenberg University Mainz, Germany + * GiNaC Copyright (C) 1999-2007 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 @@ -17,7 +17,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef __GINAC_FLAGS_H__ @@ -34,6 +34,14 @@ public: }; }; +/** Flags to control the behavior of has(). */ +class has_options { +public: + enum { + algebraic = 0x0001, ///< enable algebraic matching + }; +}; + /** Flags to control the behavior of subs(). */ class subs_options { public: @@ -42,8 +50,23 @@ public: subs_no_pattern = 0x0001, // for backwards compatibility algebraic = 0x0002, ///< enable algebraic substitutions subs_algebraic = 0x0002, // for backwards compatibility - pattern_is_product = 0x0004, ///< used internally by expairseq::subschildren() - pattern_is_not_product = 0x0008 ///< used internally by expairseq::subschildren() + pattern_is_product = 0x0004, ///< used internally by expairseq::subschildren() + pattern_is_not_product = 0x0008, ///< used internally by expairseq::subschildren() + no_index_renaming = 0x0010, + // To indicate that we want to substitue an index by something that is + // is not an index. Without this flag the index value would be + // substituted in that case. + really_subs_idx = 0x0020 + }; +}; + +/** Domain of an object */ +class domain { +public: + enum { + complex, + real, + positive }; }; @@ -169,7 +192,8 @@ public: dynallocated = 0x0001, ///< heap-allocated (i.e. created by new if we want to be clever and bypass the stack, @see ex::construct_from_basic() ) 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 + 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()) }; }; @@ -177,7 +201,7 @@ public: class info_flags { public: enum { - // answered by class numeric + // answered by class numeric and symbols/constants in particular domains numeric, real, rational,