-/** Specialization of is_exactly_a<add>(obj) for add objects. */
-template<> inline bool is_exactly_a<add>(const basic & obj)
-{
- return obj.tinfo()==TINFO_add;
-}
+ // non-virtual functions in this class
+protected:
+ void print_add(const print_context & c, const char *openbrace, const char *closebrace, const char *mul_sym, unsigned level) const;
+ void do_print(const print_context & c, unsigned level) const;
+ void do_print_latex(const print_latex & c, unsigned level) const;
+ void do_print_csrc(const print_csrc & c, unsigned level) const;
+ void do_print_python_repr(const print_python_repr & c, unsigned level) const;
+};
+GINAC_DECLARE_UNARCHIVER(add);