chzchz

Untitled

Apr 5th, 2019
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.28 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include <memory>
  4. #include "date.h"
  5. #include "condition_parser.h"
  6.  
  7.  
  8. using namespace std;
  9.  
  10.  
  11. class Node {
  12.  public:
  13.   Node();
  14.   virtual bool Evaluate(const Date &date, const string &event) const = 0;
  15. };
  16.  
  17.  
  18. class EmptyNode : public Node {
  19.  public:
  20.   EmptyNode();
  21.  
  22.   bool Evaluate(const Date &date, const string &event) const override;
  23. };
  24.  
  25.  
  26. class DateComparisonNode : public Node {
  27.  public:
  28.   DateComparisonNode(const Comparison &comparison, const Date &date);
  29.  
  30.   bool Evaluate(const Date &date, const string &event) const override;
  31.  
  32.  private:
  33.   const Comparison _comparison;
  34.   const Date _date;
  35. };
  36.  
  37.  
  38. class EventComparisonNode : public Node {
  39.  public:
  40.   EventComparisonNode(const Comparison &comparison, const string &value);
  41.  
  42.   bool Evaluate(const Date &date, const string &event) const override;
  43.  
  44.  private:
  45.   const Comparison _comparison;
  46.   const string _value;
  47. };
  48.  
  49.  
  50. class LogicalOperationNode : public Node {
  51.  public:
  52.   LogicalOperationNode(const LogicalOperation &logical_operation, const shared_ptr<Node> &left,
  53.                        const shared_ptr<Node> &right);
  54.  
  55.   bool Evaluate(const Date &date, const string &event) const override;
  56.  
  57.  private:
  58.   const LogicalOperation _logical_operation;
  59.   const shared_ptr<Node> _left, _right;
  60. };
Advertisement
Add Comment
Please, Sign In to add comment