From 2fcef9b48bb97da82d5828776e9be50be1fdafbc Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Thu, 25 Sep 2014 19:05:01 +0200 Subject: Increased Node constness and removed type member method * marked "solve" and "print" implementations as const * converted member variables into constants where possible * "type" member method is not necessary and partially defeats the purpose of declaring virtual members --- src/nodes.h | 43 +++++++++++++++++++------------------------ 1 file changed, 19 insertions(+), 24 deletions(-) (limited to 'src/nodes.h') diff --git a/src/nodes.h b/src/nodes.h index 2581a2d..9559722 100644 --- a/src/nodes.h +++ b/src/nodes.h @@ -9,61 +9,56 @@ namespace SimpleParser { enum class TokenType; typedef std::map ConstantMap; -enum class NodeType { - OPERAND, - OPERATOR, - CONSTANT, -}; - class Node { public: virtual ~Node() {}; - virtual double solve() = 0; - virtual NodeType type() = 0; - virtual std::string print() = 0; + virtual double solve() const = 0; + virtual std::string print() const = 0; Node* leftChild; Node* rightChild; + }; class OperatorNode: public Node { public: explicit OperatorNode(TokenType); - virtual double solve(); - virtual NodeType type(); - virtual std::string print(); + TokenType token() const; + + virtual double solve() const; + virtual std::string print() const; - TokenType token(); private: - TokenType operator_; + const TokenType operator_; + }; class OperandNode: public Node { public: explicit OperandNode(double); - virtual double solve(); - virtual NodeType type(); - virtual std::string print(); + virtual double solve() const; + virtual std::string print() const; private: - double value_; + const double value_; + }; class ConstantNode: public Node { public: - explicit ConstantNode(std::string, const ConstantMap*); + ConstantNode(const std::string&, const ConstantMap*); - virtual double solve(); - virtual NodeType type(); - virtual std::string print(); + virtual double solve() const; + virtual std::string print() const; private: - std::string identifier_; - const ConstantMap* constants_; + const std::string identifier_; + const ConstantMap* const constants_; + }; } -- cgit v1.2.3