+ static ex unarchive(const archive_node &n, const lst &sym_lst);
+
+/** Macro for inclusion in the declaration of each registered class.
+ * It declares some functions that are common to all classes derived
+ * from 'basic' as well as all required stuff for the GiNaC class
+ * registry (mainly needed for archiving). */
+#define GINAC_DECLARE_REGISTERED_CLASS(classname, supername) \
+ GINAC_DECLARE_REGISTERED_CLASS_NO_CTORS(classname, supername) \
+public: \
+ classname(); \
+ ~classname() { destroy(false); } \
+ classname(const classname & other); \
+ const classname & operator=(const classname & other); \
+ basic * duplicate() const; \
+protected: \
+ void copy(const classname & other); \
+ void destroy(bool call_parent); \
+ int compare_same_type(const basic & other) const; \