X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fsymbol.cpp;h=2fa8907fef1c49840832be27dd0fe00b66855a1d;hp=f1dc18dffc7ad7a3a8413a0d925d9160a1147ca8;hb=f96b27f98d583f0421a30c553f7aac93ecaf2ddb;hpb=24fe247f9ed16114a765a01c593fec5c4a2f591c diff --git a/ginac/symbol.cpp b/ginac/symbol.cpp index f1dc18df..2fa8907f 100644 --- a/ginac/symbol.cpp +++ b/ginac/symbol.cpp @@ -3,7 +3,7 @@ * Implementation of GiNaC's symbolic objects. */ /* - * GiNaC Copyright (C) 1999 Johannes Gutenberg University Mainz, Germany + * 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 @@ -29,7 +29,9 @@ #include "idx.h" #include "debugmsg.h" +#ifndef NO_GINAC_NAMESPACE namespace GiNaC { +#endif // ndef NO_GINAC_NAMESPACE ////////// // default constructor, destructor, copy constructor assignment operator and helpers @@ -108,10 +110,43 @@ basic * symbol::duplicate() const return new symbol(*this); } +void symbol::print(ostream & os, unsigned upper_precedence) const +{ + debugmsg("symbol print",LOGLEVEL_PRINT); + os << name; +} + +void symbol::printraw(ostream & os) const +{ + debugmsg("symbol printraw",LOGLEVEL_PRINT); + os << "symbol(" << "name=" << name << ",serial=" << serial + << ",hash=" << hashvalue << ",flags=" << flags << ")"; +} + +void symbol::printtree(ostream & os, unsigned indent) const +{ + debugmsg("symbol printtree",LOGLEVEL_PRINT); + os << string(indent,' ') << name << " (symbol): " + << "serial=" << serial + << ", hash=" << hashvalue << " (0x" << hex << hashvalue << dec << ")" + << ", flags=" << flags << endl; +} + +void symbol::printcsrc(ostream & os, unsigned type, unsigned upper_precedence) const +{ + debugmsg("symbol print csrc", LOGLEVEL_PRINT); + os << name; +} + bool symbol::info(unsigned inf) const { if (inf==info_flags::symbol) return true; - if (inf==info_flags::polynomial || inf==info_flags::integer_polynomial || inf==info_flags::rational_polynomial || inf==info_flags::rational_function) { + if (inf==info_flags::polynomial || + inf==info_flags::integer_polynomial || + inf==info_flags::cinteger_polynomial || + inf==info_flags::rational_polynomial || + inf==info_flags::crational_polynomial || + inf==info_flags::rational_function) { return true; } else { return basic::info(inf); @@ -142,9 +177,9 @@ int symbol::ldegree(symbol const & s) const ex symbol::coeff(symbol const & s, int const n) const { if (compare_same_type(s)==0) { - return n==1 ? exONE() : exZERO(); + return n==1 ? _ex1() : _ex0(); } else { - return n==0 ? *this : exZERO(); + return n==0 ? *this : _ex0(); } } @@ -170,13 +205,13 @@ ex symbol::subs(lst const & ls, lst const & lr) const { GINAC_ASSERT(ls.nops()==lr.nops()); #ifdef DO_GINAC_ASSERT - for (int i=0; iis_assigned) { asexinfop->is_assigned=0; - asexinfop->assigned_expression=exZERO(); + asexinfop->assigned_expression=_ex0(); } setflag(status_flags::evaluated); } @@ -281,4 +316,6 @@ symbol::assigned_ex_info::assigned_ex_info(void) : is_assigned(0), refcount(1) { } +#ifndef NO_GINAC_NAMESPACE } // namespace GiNaC +#endif // ndef NO_GINAC_NAMESPACE