X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=ginac%2Fsymbol.cpp;h=1ed94f3d59ef7df1466e70f90429c70fb166881e;hp=6b265a775e74e67b4d6877618620cf1a187ce4ed;hb=488cad4c124885230154720041bd51fa4d983a8b;hpb=1ed8f877ea0ca066c276d5bea08f2e775559aa81 diff --git a/ginac/symbol.cpp b/ginac/symbol.cpp index 6b265a77..1ed94f3d 100644 --- a/ginac/symbol.cpp +++ b/ginac/symbol.cpp @@ -32,7 +32,11 @@ namespace GiNaC { -GINAC_IMPLEMENT_REGISTERED_CLASS(symbol, basic) +GINAC_IMPLEMENT_REGISTERED_CLASS_OPT(symbol, basic, + print_func(&symbol::do_print). + print_func(&symbol::do_print_latex). + print_func(&symbol::do_print_tree). + print_func(&symbol::do_print_python_repr)) ////////// // default constructor @@ -108,24 +112,30 @@ void symbol::archive(archive_node &n) const // public -void symbol::print(const print_context & c, unsigned level) const +void symbol::do_print(const print_context & c, unsigned level) const { - if (is_a(c)) { - - c.s << std::string(level, ' ') << name << " (" << class_name() << ")" - << ", serial=" << serial - << std::hex << ", hash=0x" << hashvalue << ", flags=0x" << flags << std::dec - << std::endl; - - } else if (is_a(c)) { - c.s << TeX_name; - } else if (is_a(c)) { - c.s << class_name() << "('" << name; - if (TeX_name != default_TeX_name()) - c.s << "','" << TeX_name; - c.s << "')"; - } else - c.s << name; + c.s << name; +} + +void symbol::do_print_latex(const print_latex & c, unsigned level) const +{ + c.s << TeX_name; +} + +void symbol::do_print_tree(const print_tree & c, unsigned level) const +{ + c.s << std::string(level, ' ') << name << " (" << class_name() << ")" + << ", serial=" << serial + << std::hex << ", hash=0x" << hashvalue << ", flags=0x" << flags << std::dec + << std::endl; +} + +void symbol::do_print_python_repr(const print_python_repr & c, unsigned level) const +{ + c.s << class_name() << "('" << name; + if (TeX_name != default_TeX_name()) + c.s << "','" << TeX_name; + c.s << "')"; } bool symbol::info(unsigned inf) const