- virtual basic * duplicate() const;
- virtual void print(std::ostream & os,unsigned upper_precedence = 0) const;
- virtual void printraw(std::ostream & os) const;
- virtual void printtree(std::ostream & os, unsigned indent) const;
- virtual void printcsrc(std::ostream & os, unsigned type, unsigned upper_precedence = 0) const;
- virtual void dbgprint(void) const;
- virtual void dbgprinttree(void) const;
+
+ /** Create a clone of this object on the heap. One can think of this as
+ * simulating a virtual copy constructor which is needed for instance by
+ * the refcounted construction of an ex from a basic. */
+ virtual basic * duplicate() const { return new basic(*this); }
+
+ // evaluation
+ virtual ex eval(int level = 0) const;
+ virtual ex evalf(int level = 0) const;
+ virtual ex evalm() const;
+protected:
+ virtual ex eval_ncmul(const exvector & v) const;
+public:
+ virtual ex eval_indexed(const basic & i) const;
+
+ // printing
+ virtual void print(const print_context & c, unsigned level = 0) const;
+ virtual void dbgprint() const;
+ virtual void dbgprinttree() const;
+ virtual unsigned precedence() const;
+
+ // info