diff options
Diffstat (limited to 'include/expressions.hpp')
-rw-r--r-- | include/expressions.hpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/include/expressions.hpp b/include/expressions.hpp index 3191436..a293408 100644 --- a/include/expressions.hpp +++ b/include/expressions.hpp @@ -23,14 +23,14 @@ enum trig_functions { i_ctg }; -class Differentiator; // Forward declaration. +class Differentiator; // Forward declaration class Expression { public: Expression(Expression *left, Expression *right, token_type type); virtual ~Expression() = default; std::string getRepr(); - Expression *diff(const Differentiator *d); + virtual Expression *diff(const Differentiator *d) = 0; Expression *getLeft(); Expression *getRight(); virtual float eval(int arg) = 0; @@ -52,6 +52,7 @@ public: ~Literal(); int getValue(); float eval(int arg) override; + Expression *diff(const Differentiator *d) override; Expression *copy() override; protected: void setRepr() override; @@ -66,6 +67,7 @@ public: ~Function(); Expression *getArg(); float eval(int arg) override; + Expression *diff(const Differentiator *d) override; trig_functions getFunctionName() const; Expression *copy() override; protected: @@ -80,6 +82,7 @@ public: explicit Variable(char name); ~Variable(); float eval(int arg) override; + Expression *diff(const Differentiator *d) override; Expression *copy() override; protected: void setRepr() override; @@ -90,6 +93,7 @@ public: AddExpression(Expression *left, Expression *right); ~AddExpression(); float eval(int arg) override; + Expression *diff(const Differentiator *d) override; Expression *copy() override; }; @@ -99,6 +103,7 @@ public: ~SubExpression(); float eval(int arg) override; Expression *copy() override; + Expression *diff(const Differentiator *d) override; }; class NegationExpression : public Expression { @@ -107,6 +112,7 @@ public: ~NegationExpression(); float eval(int arg) override; Expression *copy() override; + Expression *diff(const Differentiator *d) override; protected: void setRepr() override; }; @@ -117,6 +123,7 @@ public: ~DivisionExpression(); float eval(int arg) override; Expression *copy() override; + Expression *diff(const Differentiator *d) override; }; class MultiplicationExpression : public Expression { @@ -125,6 +132,7 @@ public: ~MultiplicationExpression(); float eval(int arg) override; Expression *copy() override; + Expression *diff(const Differentiator *d) override; }; class PowerExpression : public Expression { @@ -133,6 +141,7 @@ public: ~PowerExpression(); float eval(int arg) override; Expression *copy() override; + Expression *diff(const Differentiator *d) override; }; #endif /* EXPRESSIONS_H */ |