X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fncmul.h;h=10477938504795cc7390861e07191b5cc09ea278;hp=1b833b0b638847852a03e0e236b6e1c1d487cbc2;hb=0a1b35cf1e59c9e3aae33de8febaa1c8f4bbe630;hpb=6b3768e8c544739ae53321539cb4d1e3112ded1b diff --git a/ginac/ncmul.h b/ginac/ncmul.h index 1b833b0b..10477938 100644 --- a/ginac/ncmul.h +++ b/ginac/ncmul.h @@ -2,16 +2,38 @@ * * Interface to GiNaC's non-commutative products of expressions. */ -#ifndef _NCMUL_H_ -#define _NCMUL_H_ +/* + * GiNaC Copyright (C) 1999-2000 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_NCMUL_H__ +#define __GINAC_NCMUL_H__ -#include "exprseq.h" +#include -class ncmul; +#ifndef NO_GINAC_NAMESPACE +namespace GiNaC { +#endif // ndef NO_GINAC_NAMESPACE /** Non-commutative product of expressions. */ class ncmul : public exprseq { + GINAC_DECLARE_REGISTERED_CLASS(ncmul, exprseq) + friend class power; friend ex nonsimplified_ncmul(exvector const & v); friend ex simplified_ncmul(exvector const & v); @@ -44,8 +66,8 @@ public: // functions overriding virtual functions from bases classes public: basic * duplicate() const; - void printraw(ostream & os) const; void print(ostream & os, unsigned upper_precedence) const; + void printraw(ostream & os) const; void printcsrc(ostream & os, unsigned upper_precedence) const; bool info(unsigned inf) const; int degree(symbol const & s) const; @@ -90,7 +112,14 @@ extern type_info const & typeid_ncmul; ex nonsimplified_ncmul(exvector const & v); ex simplified_ncmul(exvector const & v); -#define ex_to_ncmul(X) static_cast(*(X).bp) +// utility functions +inline const ncmul &ex_to_ncmul(const ex &e) +{ + return static_cast (*e.bp); +} -#endif // ndef _NCMUL_H_ +#ifndef NO_GINAC_NAMESPACE +} // namespace GiNaC +#endif // ndef NO_GINAC_NAMESPACE +#endif // ndef __GINAC_NCMUL_H__