3 * Interface to relations between expressions. */
12 /** This class holds a relation consisting of two expressions and a logical
13 * relation between them. */
14 class relational : public basic
19 enum operators { equal,
29 // default constructor, destructor, copy constructor assignment operator and helpers
33 relational(relational const & other);
34 relational const & operator=(relational const & other);
36 void copy(relational const & other);
37 void destroy(bool call_parent);
41 relational(ex const & lhs, ex const & rhs, operators oper=equal);
43 // functions overriding virtual functions from bases classes
45 basic * duplicate() const;
46 void printraw(ostream & os) const;
47 void print(ostream & os, unsigned upper_precedence=0) const;
48 void printcsrc(ostream & os, unsigned type, unsigned upper_precedence=0) const;
49 bool info(unsigned inf) const;
51 ex & let_op(int const i);
52 ex eval(int level=0) const;
53 ex evalf(int level=0) const;
54 ex simplify_ncmul(exvector const & v) const;
56 int compare_same_type(basic const & other) const;
57 unsigned return_type(void) const;
58 unsigned return_type_tinfo(void) const;
60 // new virtual functions which can be overridden by derived classes
63 // non-virtual functions in this class
65 operator bool(void) const;
73 static unsigned precedence;
78 extern const relational some_relational;
79 extern type_info const & typeid_relational;
81 #define ex_to_relational(X) static_cast<relational const &>(*(X).bp)
83 #endif // ndef _RELATIONAL_H_