00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "expression.hpp"
00011
00012 class CouExpr {
00013
00014 private:
00015
00016 expression *expr_;
00017
00018 public:
00019
00020 CouExpr (expression *e):
00021 expr_ (e) {}
00022
00023 CouExpr (const CouExpr &e) {
00024 expr_ = e.expr_ -> clone ();
00025 }
00026
00027 CouExpr &operator=(CouExpr &e) {
00028 expr_ = e.expr_ -> clone ();
00029 return *this;
00030 }
00031
00032 expression *Expression () const
00033 {return expr_;}
00034 };
00035
00036
00037 CouExpr operator+(CouExpr &e1, CouExpr &e2);
00038 CouExpr &operator/(CouExpr &e1, CouExpr &e2);
00039 CouExpr &operator%(CouExpr &e1, CouExpr &e2);
00040 CouExpr &operator-(CouExpr &e1, CouExpr &e2);
00041 CouExpr &operator*(CouExpr &e1, CouExpr &e2);
00042 CouExpr &operator^(CouExpr &e1, CouExpr &e2);
00043
00044 CouExpr &sin(CouExpr &e);
00045 CouExpr &cos(CouExpr &e);
00046 CouExpr &log(CouExpr &e);
00047 CouExpr &exp(CouExpr &e);
00048
00049 CouExpr &operator+(CouNumber &e1, CouExpr &e2);
00050 CouExpr &operator/(CouNumber &e1, CouExpr &e2);
00051 CouExpr &operator%(CouNumber &e1, CouExpr &e2);
00052 CouExpr &operator-(CouNumber &e1, CouExpr &e2);
00053 CouExpr &operator*(CouNumber &e1, CouExpr &e2);
00054 CouExpr &operator^(CouNumber &e1, CouExpr &e2);
00055
00056 CouExpr &sin(CouNumber &e);
00057 CouExpr &cos(CouNumber &e);
00058 CouExpr &log(CouNumber &e);
00059 CouExpr &exp(CouNumber &e);
00060
00061 CouExpr &operator+(CouExpr &e1, CouNumber &e2);
00062 CouExpr &operator/(CouExpr &e1, CouNumber &e2);
00063 CouExpr &operator%(CouExpr &e1, CouNumber &e2);
00064 CouExpr &operator-(CouExpr &e1, CouNumber &e2);
00065 CouExpr &operator*(CouExpr &e1, CouNumber &e2);
00066 CouExpr &operator^(CouExpr &e1, CouNumber &e2);
00067