X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fstructure.cpp;h=54dc1dfc62ae7f592eb50d362a6716a441e3ed38;hp=35b53e3c0c2eb807cd01370369e350451cbe3470;hb=1c9720626245312534c8311b47a8749dd2e18526;hpb=4e3a4ac2bcb0837611ea31bc8fc05d84a20c33ac diff --git a/ginac/structure.cpp b/ginac/structure.cpp index 35b53e3c..54dc1dfc 100644 --- a/ginac/structure.cpp +++ b/ginac/structure.cpp @@ -25,6 +25,8 @@ #include "structure.h" #include "archive.h" #include "debugmsg.h" +#include "utils.h" +#include "print.h" namespace GiNaC { @@ -34,98 +36,35 @@ GINAC_IMPLEMENT_REGISTERED_CLASS(structure, basic) // default ctor, dtor, copy ctor assignment operator and helpers ////////// -// public - -structure::structure() -{ - debugmsg("structure default ctor",LOGLEVEL_CONSTRUCT); - tinfo_key = TINFO_structure; -} - -// protected - -void structure::copy(const structure & other) -{ - basic::copy(other); -} - -void structure::destroy(bool call_parent) -{ - if (call_parent) basic::destroy(call_parent); -} - -////////// -// other ctors -////////// - -// none +DEFAULT_CTORS(structure) ////////// // archiving ////////// -/** Construct object from archive_node. */ -structure::structure(const archive_node &n, const lst &sym_lst) : inherited(n, sym_lst) -{ - debugmsg("structure ctor from archive_node", LOGLEVEL_CONSTRUCT); -} - -/** Unarchive the object. */ -ex structure::unarchive(const archive_node &n, const lst &sym_lst) -{ - return (new structure(n, sym_lst))->setflag(status_flags::dynallocated); -} - -/** Archive the object. */ -void structure::archive(archive_node &n) const -{ - inherited::archive(n); -} +DEFAULT_ARCHIVING(structure) ////////// -// structures overriding virtual structures from bases classes +// functions overriding virtual functions from bases classes ////////// -// public - -void structure::printraw(std::ostream & os) const -{ - debugmsg("structure printraw",LOGLEVEL_PRINT); - - os << "structure(hash=" << hashvalue << ",flags=" << flags << ")"; -} - -void structure::print(std::ostream & os, unsigned upper_precedence) const +void structure::print(const print_context & c, unsigned level) const { debugmsg("structure print",LOGLEVEL_PRINT); - os << "structure()"; -} + if (is_of_type(c, print_tree)) { -void structure::printtree(std::ostream & os, unsigned indent) const -{ - debugmsg("structure printtree",LOGLEVEL_PRINT); + c.s << std::string(level, ' ') << class_name() + << std::hex << ", hash=0x" << hashvalue << ", flags=0x" << flags << std::dec + << std::endl; - os << std::string(indent,' ') << "structure " - << "hash=" << hashvalue - << " (0x" << std::hex << hashvalue << std::dec << ")" - << ", flags=" << flags << std::endl; -} - -void structure::printcsrc(std::ostream & os, unsigned type, unsigned upper_precedence) const -{ - debugmsg("structure print csrc",LOGLEVEL_PRINT); - - os << "structure()"; + } else + c.s << class_name() << "()"; } // protected -int structure::compare_same_type(const basic & other) const -{ - GINAC_ASSERT(is_of_type(other, structure)); - return 0; // all structures are the same -} +DEFAULT_COMPARE(structure) bool structure::is_equal_same_type(const basic & other) const { @@ -134,13 +73,7 @@ bool structure::is_equal_same_type(const basic & other) const } ////////// -// new virtual structures which can be overridden by derived classes -////////// - -// none - -////////// -// non-virtual structures in this class +// non-virtual functions in this class ////////// // protected