X-Git-Url: https://ginac.de/ginac.git//ginac.git?a=blobdiff_plain;f=ginac%2Fregistrar.h;h=f038b8ecfb25b2366dec6e6951ecdf38c6b1f0a5;hb=ad7e72a894ece87cd67ee14ba4ed5fc16e59b140;hp=2737325bb8fbb91a59590d46c85f551a72f5733c;hpb=1bd972bf8e4eeeb8aec6081100876e81a7f18450;p=ginac.git diff --git a/ginac/registrar.h b/ginac/registrar.h index 2737325b..f038b8ec 100644 --- a/ginac/registrar.h +++ b/ginac/registrar.h @@ -25,9 +25,7 @@ #include -#ifndef NO_NAMESPACE_GINAC namespace GiNaC { -#endif // ndef NO_NAMESPACE_GINAC class registered_class_info; class ex; @@ -61,6 +59,7 @@ struct registered_class_info { }; +/** Primary macro for inclusion in the implementation of each registered class. */ #define GINAC_DECLARE_REGISTERED_CLASS_NO_CTORS(classname, supername) \ public: \ typedef supername inherited; \ @@ -78,7 +77,7 @@ public: \ GINAC_DECLARE_REGISTERED_CLASS_NO_CTORS(classname, supername) \ public: \ classname(); \ - ~classname(); \ + ~classname() { destroy(false); } \ classname(const classname & other); \ const classname & operator=(const classname & other); \ basic * duplicate() const; \ @@ -88,38 +87,26 @@ protected: \ int compare_same_type(const basic & other) const; \ private: +/** Primary macro for inclusion in the implementation of each registered class. */ #define GINAC_IMPLEMENT_REGISTERED_CLASS_NO_CTORS(classname, supername) \ registered_class_info classname::reg_info(#classname, #supername, TINFO_##classname, &classname::unarchive); \ const char *classname::class_name(void) const {return reg_info.name;} /** Macro for inclusion in the implementation of each registered class. * It implements some functions that are the same in all classes derived - * from 'basic' (such as the destructor, the copy constructor and the - * assignment operator). */ + * from 'basic' (such as the assignment operator). */ #define GINAC_IMPLEMENT_REGISTERED_CLASS(classname, supername) \ GINAC_IMPLEMENT_REGISTERED_CLASS_NO_CTORS(classname, supername) \ -classname::~classname() \ -{ \ - debugmsg(#classname " destructor", LOGLEVEL_DESTRUCT); \ - destroy(false); \ -} \ -classname::classname(const classname & other) \ -{ \ - debugmsg(#classname " copy constructor", LOGLEVEL_CONSTRUCT); \ - copy(other); \ -} \ +classname::classname(const classname & other) { copy(other); } \ const classname & classname::operator=(const classname & other) \ { \ - debugmsg(#classname " operator=", LOGLEVEL_ASSIGNMENT); \ if (this != &other) { \ destroy(true); \ copy(other); \ } \ return *this; \ } \ -basic * classname::duplicate() const \ -{ \ - debugmsg(#classname " duplicate", LOGLEVEL_DUPLICATE); \ +basic * classname::duplicate() const { \ return new classname(*this); \ } @@ -131,8 +118,6 @@ extern unsigned int find_tinfo_key(const std::string &class_name); extern unarch_func find_unarch_func(const std::string &class_name); -#ifndef NO_NAMESPACE_GINAC } // namespace GiNaC -#endif // ndef NO_NAMESPACE_GINAC #endif // ndef __GINAC_REGISTRAR_H__