From 32209e57010f19f080cc25e527347bcaa36053ec Mon Sep 17 00:00:00 2001 From: Alexei Sheplyakov Date: Fri, 17 Oct 2008 14:56:54 +0400 Subject: [PATCH] symbol: remove return_type_tinfo() and return_type() (shrink symbol by 8 bytes) Bloating symbol to the state sizeof(symbol) == 64 is not appreciated at all. If someone needs/wants non-commutative symbols or other fancy stuff, please derive from class symbol and do whatever you want. --- ginac/symbol.cpp | 39 +++------------------------------------ ginac/symbol.h | 11 ----------- 2 files changed, 3 insertions(+), 47 deletions(-) diff --git a/ginac/symbol.cpp b/ginac/symbol.cpp index 6ef9ade5..d48ac997 100644 --- a/ginac/symbol.cpp +++ b/ginac/symbol.cpp @@ -45,7 +45,7 @@ GINAC_IMPLEMENT_REGISTERED_CLASS_OPT(symbol, basic, // symbol symbol::symbol() - : serial(next_serial++), name(autoname_prefix() + ToString(serial)), TeX_name(name), domain(domain::complex), ret_type(return_types::commutative), ret_type_tinfo(make_return_type_t()) + : serial(next_serial++), name(autoname_prefix() + ToString(serial)), TeX_name(name), domain(domain::complex) { setflag(status_flags::evaluated | status_flags::expanded); } @@ -74,30 +74,13 @@ possymbol::possymbol() symbol::symbol(const std::string & initname, unsigned domain) : serial(next_serial++), name(initname), TeX_name(default_TeX_name()), - domain(domain), ret_type(return_types::commutative), - ret_type_tinfo(make_return_type_t()) -{ - setflag(status_flags::evaluated | status_flags::expanded); -} - -symbol::symbol(const std::string & initname, unsigned rt, const return_type_t& rtt, unsigned domain) : - serial(next_serial++), name(initname), TeX_name(default_TeX_name()), - domain(domain), ret_type(rt), ret_type_tinfo(rtt) + domain(domain) { setflag(status_flags::evaluated | status_flags::expanded); } symbol::symbol(const std::string & initname, const std::string & texname, unsigned domain) : - serial(next_serial++), name(initname), TeX_name(texname), domain(domain), - ret_type(return_types::commutative), ret_type_tinfo(make_return_type_t()) -{ - setflag(status_flags::evaluated | status_flags::expanded); -} - -symbol::symbol(const std::string & initname, const std::string & texname, - unsigned rt, const return_type_t& rtt, unsigned domain) : - serial(next_serial++), name(initname), TeX_name(texname), - domain(domain), ret_type(rt), ret_type_tinfo(rtt) + serial(next_serial++), name(initname), TeX_name(texname), domain(domain) { setflag(status_flags::evaluated | status_flags::expanded); } @@ -110,12 +93,6 @@ realsymbol::realsymbol(const std::string & initname, unsigned domain) realsymbol::realsymbol(const std::string & initname, const std::string & texname, unsigned domain) : symbol(initname, texname, domain) { } -realsymbol::realsymbol(const std::string & initname, unsigned rt, const return_type_t& rtt, unsigned domain) - : symbol(initname, rt, rtt, domain) { } - -realsymbol::realsymbol(const std::string & initname, const std::string & texname, unsigned rt, const return_type_t& rtt, unsigned domain) - : symbol(initname, texname, rt, rtt, domain) { } - // possymbol possymbol::possymbol(const std::string & initname, unsigned domain) @@ -124,12 +101,6 @@ possymbol::possymbol(const std::string & initname, unsigned domain) possymbol::possymbol(const std::string & initname, const std::string & texname, unsigned domain) : symbol(initname, texname, domain) { } -possymbol::possymbol(const std::string & initname, unsigned rt, const return_type_t& rtt, unsigned domain) - : symbol(initname, rt, rtt, domain) { } - -possymbol::possymbol(const std::string & initname, const std::string & texname, unsigned rt, const return_type_t& rtt, unsigned domain) - : symbol(initname, texname, rt, rtt, domain) { } - ////////// // archiving ////////// @@ -144,8 +115,6 @@ symbol::symbol(const archive_node &n, lst &sym_lst) TeX_name = default_TeX_name(); if (!n.find_unsigned("domain", domain)) domain = domain::complex; - if (!n.find_unsigned("return_type", ret_type)) - ret_type = return_types::commutative; setflag(status_flags::evaluated | status_flags::expanded); } @@ -174,8 +143,6 @@ void symbol::archive(archive_node &n) const n.add_string("TeX_name", TeX_name); if (domain != domain::complex) n.add_unsigned("domain", domain); - if (ret_type != return_types::commutative) - n.add_unsigned("return_type", ret_type); } ////////// diff --git a/ginac/symbol.h b/ginac/symbol.h index 00d4b903..29e7ad40 100644 --- a/ginac/symbol.h +++ b/ginac/symbol.h @@ -46,9 +46,6 @@ class symbol : public basic public: explicit symbol(const std::string & initname, unsigned domain = domain::complex); symbol(const std::string & initname, const std::string & texname, unsigned domain = domain::complex); - symbol(const std::string & initname, const std::string & texname, unsigned rt, unsigned domain); - symbol(const std::string & initname, unsigned rt, const return_type_t& rtt, unsigned domain = domain::complex); - symbol(const std::string & initname, const std::string & texname, unsigned rt, const return_type_t& rtt, unsigned domain = domain::complex); // functions overriding virtual functions from base classes public: @@ -60,8 +57,6 @@ public: ex normal(exmap & repl, exmap & rev_lookup, int level = 0) const; ex to_rational(exmap & repl) const; ex to_polynomial(exmap & repl) const; - unsigned return_type() const { return ret_type; } - return_type_t return_type_tinfo() const { return ret_type_tinfo; } ex conjugate() const; ex real_part() const; ex imag_part() const; @@ -92,8 +87,6 @@ protected: std::string name; ///< printname of this symbol std::string TeX_name; ///< LaTeX name of this symbol unsigned domain; ///< domain of symbol, complex (default) or real - unsigned ret_type; ///< value returned by return_type() - return_type_t ret_type_tinfo; ///< value returned by return_type_tinfo() private: static unsigned next_serial; }; @@ -107,8 +100,6 @@ public: realsymbol(); explicit realsymbol(const std::string & initname, unsigned domain = domain::real); realsymbol(const std::string & initname, const std::string & texname, unsigned domain = domain::real); - realsymbol(const std::string & initname, unsigned rt, const return_type_t& rtt, unsigned domain = domain::real); - realsymbol(const std::string & initname, const std::string & texname, unsigned rt, const return_type_t& rtt, unsigned domain = domain::real); }; @@ -120,8 +111,6 @@ public: possymbol(); explicit possymbol(const std::string & initname, unsigned domain = domain::positive); possymbol(const std::string & initname, const std::string & texname, unsigned domain = domain::positive); - possymbol(const std::string & initname, unsigned rt, const return_type_t& rtt, unsigned domain = domain::positive); - possymbol(const std::string & initname, const std::string & texname, unsigned rt, const return_type_t& rtt, unsigned domain = domain::positive); }; -- 2.49.0