]> www.ginac.de Git - ginac.git/blobdiff - ginac/flags.h
Added complex conjugation methods and GiNaC function "conjugate".
[ginac.git] / ginac / flags.h
index c14e58408aa64ba765de1b0d26be9d3d8cd8fd4d..616cc56f0a13af5facecbba9f019e13d7029fee5 100644 (file)
@@ -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-2004 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
@@ -38,15 +38,26 @@ public:
 class subs_options {
 public:
        enum {
-               // this should be called "no_pattern"...
-               subs_no_pattern = 0x0001,        ///< disable pattern matching
-               // this should be called "algebraic"...
-               subs_algebraic = 0x0002,         ///< enable algebraic substitutions
+               no_pattern = 0x0001,             ///< disable pattern matching
+               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()
        };
 };
 
+/** Flags to decide how conjugate should treat a symbol */
+class symbol_options {
+public:
+       enum {
+               /** Symbol is treated like a complex valued expression */
+               complex,
+               /** Symbol is treated like a real valued expression */
+               real
+       };
+};
+
 /** Flags to control series expansion. */
 class series_options {
 public:
@@ -169,7 +180,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())
        };
 };