Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include "date.h"
- #include <memory>
- using namespace std;
- enum Comparison
- {
- Greater,
- GreaterOrEqual,
- Less,
- LessOrEqual,
- Equal,
- NotEqual
- };
- enum LogicalOperation
- {
- Or,
- And
- };
- class Node
- {
- public:
- virtual bool Evaluate(const Date& _Date, const string& _Event) const = 0;
- };
- class EmptyNode : public Node
- {
- public:
- bool Evaluate(const Date& _Date, const string& _Event) const override;
- };
- class DateComparisonNode : public Node
- {
- public:
- DateComparisonNode(const Comparison _Cmp, const Date& _Date);
- bool Evaluate(const Date& _Date, const string& _Event) const override;
- private:
- const Comparison _Cmp;
- const Date _Date;
- };
- class EventComparisonNode : public Node
- {
- public:
- EventComparisonNode(const Comparison& _Cmp, const string& _Event);
- bool Evaluate(const Date& _Date, const string& _Event) const override;
- private:
- const Comparison _Cmp;
- const string _Event;
- };
- class LogicalOperationNode : public Node
- {
- public:
- LogicalOperationNode(const LogicalOperation& _Operation, const shared_ptr<Node>& _Left, const shared_ptr<Node>& _Right);
- bool Evaluate(const Date& _Date, const string& _Event) const override;
- private:
- const LogicalOperation _Operation;
- const shared_ptr<Node> _Left, _Right;
- };
Advertisement
Add Comment
Please, Sign In to add comment