X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?a=blobdiff_plain;f=ginac%2Fsymbol.h;h=21c004c906143932ffda5e5a337754794d96e103;hb=955cb185a85535ab328ffedbfccdc508ce80fa91;hp=a10998ecc4520e0479c2cc0ed018d9247a1d4480;hpb=6b3768e8c544739ae53321539cb4d1e3112ded1b;p=ginac.git diff --git a/ginac/symbol.h b/ginac/symbol.h index a10998ec..21c004c9 100644 --- a/ginac/symbol.h +++ b/ginac/symbol.h @@ -2,15 +2,34 @@ * * Interface to GiNaC's symbolic objects. */ -#ifndef _SYMBOL_H_ -#define _SYMBOL_H_ +/* + * GiNaC Copyright (C) 1999 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 + */ -#include +#ifndef __GINAC_SYMBOL_H__ +#define __GINAC_SYMBOL_H__ -class symbol; +#include +#include +#include -#include "basic.h" -#include "ex.h" +#ifndef NO_GINAC_NAMESPACE +namespace GiNaC { +#endif // ndef NO_GINAC_NAMESPACE /** Basic CAS symbol. It has a name because it must know how to output itself. * It may be assigned an expression, but this feature is only intended for @@ -48,9 +67,9 @@ public: // functions overriding virtual functions from base classes public: basic * duplicate() const; + void print(ostream & os, unsigned upper_precedence=0) const; void printraw(ostream & os) const; void printtree(ostream & os, unsigned indent) const; - void print(ostream & os, unsigned upper_precedence=0) const; void printcsrc(ostream & os, unsigned type, unsigned upper_precedence=0) const; bool info(unsigned inf) const; ex expand(unsigned options=0) const; @@ -94,9 +113,11 @@ private: extern const symbol some_symbol; extern type_info const & typeid_symbol; -// macros - -#define ex_to_symbol(X) static_cast(*(X).bp) +// utility functions +inline const symbol &ex_to_symbol(const ex &e) +{ + return static_cast(*e.bp); +} // wrapper functions around member functions inline void unassign(symbol & symarg) @@ -108,4 +129,8 @@ inline int degree(symbol const & a, symbol const & s) inline int ldegree(symbol const & a, symbol const & s) { return a.ldegree(s); } -#endif // ndef _SYMBOL_H_ +#ifndef NO_GINAC_NAMESPACE +} // namespace GiNaC +#endif // ndef NO_GINAC_NAMESPACE + +#endif // ndef __GINAC_SYMBOL_H__