]> www.ginac.de Git - ginac.git/blobdiff - ginac/coloridx.cpp
* New funny timing added: compute an antipode in Yukawa theory.
[ginac.git] / ginac / coloridx.cpp
index e7c35c551afc8508a318b64f6ce6b0f25bdab567..cb8b629ee86295b709c469ecf97b69701341198b 100644 (file)
@@ -3,7 +3,7 @@
  *  Implementation of GiNaC's color indices. */
 
 /*
- *  GiNaC Copyright (C) 1999-2000 Johannes Gutenberg University Mainz, Germany
+ *  GiNaC Copyright (C) 1999-2001 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
@@ -27,9 +27,7 @@
 #include "utils.h"
 #include "debugmsg.h"
 
-#ifndef NO_GINAC_NAMESPACE
 namespace GiNaC {
-#endif // ndef NO_GINAC_NAMESPACE
 
 GINAC_IMPLEMENT_REGISTERED_CLASS(coloridx, idx)
 
@@ -41,44 +39,22 @@ GINAC_IMPLEMENT_REGISTERED_CLASS(coloridx, idx)
 
 coloridx::coloridx()
 {
-    debugmsg("coloridx default constructor",LOGLEVEL_CONSTRUCT);
-    // serial is incremented in idx::idx()
-    name="color"+ToString(serial);
-    tinfo_key=TINFO_coloridx;
-}
-
-coloridx::~coloridx() 
-{
-    debugmsg("coloridx destructor",LOGLEVEL_DESTRUCT);
-    destroy(0);
-}
-
-coloridx::coloridx(const coloridx & other)
-{
-    debugmsg("coloridx copy constructor",LOGLEVEL_CONSTRUCT);
-    copy(other);
-}
-
-const coloridx & coloridx::operator=(const coloridx & other)
-{
-    debugmsg("coloridx operator=",LOGLEVEL_ASSIGNMENT);
-    if (this != &other) {
-        destroy(1);
-        copy(other);
-    }
-    return *this;
+       debugmsg("coloridx default constructor",LOGLEVEL_CONSTRUCT);
+       // serial is incremented in idx::idx()
+       name="color"+ToString(serial);
+       tinfo_key=TINFO_coloridx;
 }
 
 // protected
 
 void coloridx::copy(const coloridx & other)
 {
-    inherited::copy(other);
+       inherited::copy(other);
 }
 
 void coloridx::destroy(bool call_parent)
 {
-    if (call_parent) inherited::destroy(call_parent);
+       if (call_parent) inherited::destroy(call_parent);
 }
 
 //////////
@@ -87,30 +63,49 @@ void coloridx::destroy(bool call_parent)
 
 // public
 
+/** Construct symbolic color index, using an automatically generated unique name.
+ *
+ *  @param cov Index is covariant (contravariant otherwise)
+ *  @return newly constructed index */
 coloridx::coloridx(bool cov) : idx(cov)
 {
-    debugmsg("coloridx constructor from bool",LOGLEVEL_CONSTRUCT);
-    // serial is incremented in idx::idx(bool)
-    name="color"+ToString(serial);
-    tinfo_key=TINFO_coloridx;
+       debugmsg("coloridx constructor from bool",LOGLEVEL_CONSTRUCT);
+       // serial is incremented in idx::idx(bool)
+       name="color"+ToString(serial);
+       tinfo_key=TINFO_coloridx;
 }
 
-coloridx::coloridx(const string & n, bool cov) : idx(n,cov)
+/** Construct symbolic color index with specified name.
+ *
+ *  @param n Symbolic index name
+ *  @param cov Index is covariant (contravariant otherwise)
+ *  @return newly constructed index */
+coloridx::coloridx(const std::string & n, bool cov) : idx(n,cov)
 {
-    debugmsg("coloridx constructor from string,bool",LOGLEVEL_CONSTRUCT);
-    tinfo_key=TINFO_coloridx;
+       debugmsg("coloridx constructor from string,bool",LOGLEVEL_CONSTRUCT);
+       tinfo_key=TINFO_coloridx;
 }
 
+/** Construct symbolic color index with specified name.
+ *
+ *  @param n Symbolic index name
+ *  @param cov Index is covariant (contravariant otherwise)
+ *  @return newly constructed index */
 coloridx::coloridx(const char * n, bool cov) : idx(n,cov)
 {
-    debugmsg("coloridx constructor from char*,bool",LOGLEVEL_CONSTRUCT);
-    tinfo_key=TINFO_coloridx;
+       debugmsg("coloridx constructor from char*,bool",LOGLEVEL_CONSTRUCT);
+       tinfo_key=TINFO_coloridx;
 }
 
+/** Construct numeric color index with specified value.
+ *
+ *  @param v Numeric index value
+ *  @param cov Index is covariant (contravariant otherwise)
+ *  @return newly constructed index */
 coloridx::coloridx(unsigned v, bool cov) : idx(v,cov)
 {
-    debugmsg("coloridx constructor from unsigned,bool",LOGLEVEL_CONSTRUCT);
-    tinfo_key=TINFO_coloridx;
+       debugmsg("coloridx constructor from unsigned,bool",LOGLEVEL_CONSTRUCT);
+       tinfo_key=TINFO_coloridx;
 }
 
 //////////
@@ -120,19 +115,19 @@ coloridx::coloridx(unsigned v, bool cov) : idx(v,cov)
 /** Construct object from archive_node. */
 coloridx::coloridx(const archive_node &n, const lst &sym_lst) : inherited(n, sym_lst)
 {
-    debugmsg("coloridx constructor from archive_node", LOGLEVEL_CONSTRUCT);
+       debugmsg("coloridx constructor from archive_node", LOGLEVEL_CONSTRUCT);
 }
 
 /** Unarchive the object. */
 ex coloridx::unarchive(const archive_node &n, const lst &sym_lst)
 {
-    return (new coloridx(n, sym_lst))->setflag(status_flags::dynallocated);
+       return (new coloridx(n, sym_lst))->setflag(status_flags::dynallocated);
 }
 
 /** Archive the object. */
 void coloridx::archive(archive_node &n) const
 {
-    inherited::archive(n);
+       inherited::archive(n);
 }
 
 //////////
@@ -141,105 +136,78 @@ void coloridx::archive(archive_node &n) const
 
 // public
 
-basic * coloridx::duplicate() const
+void coloridx::printraw(std::ostream & os) const
 {
-    debugmsg("coloridx duplicate",LOGLEVEL_DUPLICATE);
-    return new coloridx(*this);
-}
-
-void coloridx::printraw(ostream & os) const
-{
-    debugmsg("coloridx printraw",LOGLEVEL_PRINT);
+       debugmsg("coloridx printraw",LOGLEVEL_PRINT);
 
-    os << "coloridx(";
+       os << "coloridx(";
 
-    if (symbolic) {
-        os << "symbolic,name=" << name;
-    } else {
-        os << "non symbolic,value=" << value;
-    }
+       if (symbolic) {
+               os << "symbolic,name=" << name;
+       } else {
+               os << "non symbolic,value=" << value;
+       }
 
-    if (covariant) {
-        os << ",covariant";
-    } else {
-        os << ",contravariant";
-    }
+       if (covariant) {
+               os << ",covariant";
+       } else {
+               os << ",contravariant";
+       }
 
-    os << ",serial=" << serial;
-    os << ",hash=" << hashvalue << ",flags=" << flags;
-    os << ")";
+       os << ",serial=" << serial;
+       os << ",hash=" << hashvalue << ",flags=" << flags;
+       os << ")";
 }
 
-void coloridx::printtree(ostream & os, unsigned indent) const
+void coloridx::printtree(std::ostream & os, unsigned indent) const
 {
-    debugmsg("coloridx printtree",LOGLEVEL_PRINT);
+       debugmsg("coloridx printtree",LOGLEVEL_PRINT);
 
-    os << string(indent,' ') << "coloridx: ";
+       os << std::string(indent,' ') << "coloridx: ";
 
-    if (symbolic) {
-        os << "symbolic,name=" << name;
-    } else {
-        os << "non symbolic,value=" << value;
-    }
+       if (symbolic) {
+               os << "symbolic,name=" << name;
+       } else {
+               os << "non symbolic,value=" << value;
+       }
 
-    if (covariant) {
-        os << ",covariant";
-    } else {
-        os << ",contravariant";
-    }
+       if (covariant) {
+               os << ",covariant";
+       } else {
+               os << ",contravariant";
+       }
 
-    os << ", serial=" << serial
-       << ", hash=" << hashvalue << " (0x" << hex << hashvalue << dec << ")"
-       << ", flags=" << flags << endl;
+       os << ", serial=" << serial
+          << ", hash=" << hashvalue
+          << " (0x" << std::hex << hashvalue << std::dec << ")"
+          << ", flags=" << flags << std::endl;
 }
 
-void coloridx::print(ostream & os, unsigned upper_precedence) const
+void coloridx::print(std::ostream & os, unsigned upper_precedence) const
 {
-    debugmsg("coloridx print",LOGLEVEL_PRINT);
-
-    if (covariant) {
-        os << "_";
-    } else {
-        os << "~";
-    }
-    if (symbolic) {
-        os << name;
-    } else {
-        os << value;
-    }
+       debugmsg("coloridx print",LOGLEVEL_PRINT);
+
+       if (covariant) {
+               os << "_";
+       } else {
+               os << "~";
+       }
+       if (symbolic) {
+               os << name;
+       } else {
+               os << value;
+       }
 }
 
 bool coloridx::info(unsigned inf) const
 {
-    if (inf==info_flags::coloridx) return true;
-    return idx::info(inf);
+       if (inf==info_flags::coloridx) return true;
+       return idx::info(inf);
 }
 
-//////////
-// new virtual functions which can be overridden by derived classes
-//////////
-
-// none
-
-//////////
-// non-virtual functions in this class
-//////////
-
-// none
-
-//////////
-// static member variables
-//////////
-
-// none
-
-//////////
-// global constants
-//////////
-
-const coloridx some_coloridx;
-const type_info & typeid_coloridx=typeid(some_coloridx);
+int coloridx::compare_same_type(const basic & other) const
+{
+       return inherited::compare_same_type(other);
+}
 
-#ifndef NO_GINAC_NAMESPACE
 } // namespace GiNaC
-#endif // ndef NO_GINAC_NAMESPACE