X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fcoloridx.h;h=78bd356a3b2cce88ae6c0c83c9f49b4858193b96;hp=92e6b1ff3dfcae4d5703d20aad6c3d91d0564a9d;hb=383d5eb3b0f0506810d9105a268f939125bfc347;hpb=6b3768e8c544739ae53321539cb4d1e3112ded1b diff --git a/ginac/coloridx.h b/ginac/coloridx.h index 92e6b1ff..78bd356a 100644 --- a/ginac/coloridx.h +++ b/ginac/coloridx.h @@ -2,62 +2,92 @@ * * Interface to GiNaC's color indices. */ -#ifndef _COLORIDX_H_ -#define _COLORIDX_H_ +/* + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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 + */ + +#ifndef __GINAC_COLORIDX_H__ +#define __GINAC_COLORIDX_H__ #include #include - #include "idx.h" +#include "ex.h" + +#ifndef NO_NAMESPACE_GINAC +namespace GiNaC { +#endif // ndef NO_NAMESPACE_GINAC class coloridx : public idx { - friend class color; + GINAC_DECLARE_REGISTERED_CLASS(coloridx, idx) + + friend class color; // member functions - // default constructor, destructor, copy constructor assignment operator and helpers + // default constructor, destructor, copy constructor assignment operator and helpers public: - coloridx(); - ~coloridx(); - coloridx (coloridx const & other); - coloridx const & operator=(coloridx const & other); + coloridx(); + ~coloridx(); + coloridx (const coloridx & other); + const coloridx & operator=(const coloridx & other); protected: - void copy(coloridx const & other); - void destroy(bool call_parent); + void copy(const coloridx & other); + void destroy(bool call_parent); - // other constructors + // other constructors public: - explicit coloridx(bool cov); - explicit coloridx(string const & n, bool cov=false); - explicit coloridx(char const * n, bool cov=false); - explicit coloridx(unsigned const v, bool cov=false); + explicit coloridx(bool cov); + explicit coloridx(const std::string & n, bool cov=false); + explicit coloridx(const char * n, bool cov=false); + explicit coloridx(unsigned v, bool cov=false); - // functions overriding virtual functions from bases classes + // functions overriding virtual functions from bases classes public: - basic * duplicate() const; - void printraw(ostream & os) const; - void printtree(ostream & os, unsigned indent) const; - void print(ostream & os, unsigned upper_precedence=0) const; - bool info(unsigned inf) const; + basic * duplicate() const; + void printraw(std::ostream & os) const; + void printtree(std::ostream & os, unsigned indent) const; + void print(std::ostream & os, unsigned upper_precedence=0) const; + bool info(unsigned inf) const; - // new virtual functions which can be overridden by derived classes - // none + // new virtual functions which can be overridden by derived classes + // none - // non-virtual functions in this class - // none + // non-virtual functions in this class + // none - // member variables - // none + // member variables + // none }; // global constants extern const coloridx some_coloridx; -extern type_info const & typeid_coloridx; +extern const std::type_info & typeid_coloridx; -// macros +// utility functions +inline const coloridx &ex_to_coloridx(const ex &e) +{ + return static_cast(*e.bp); +} -#define ex_to_coloridx(X) (static_cast(*(X).bp)) +#ifndef NO_NAMESPACE_GINAC +} // namespace GiNaC +#endif // ndef NO_NAMESPACE_GINAC -#endif // ndef _COLORIDX_H_ +#endif // ndef __GINAC_COLORIDX_H__