Advertisement
chzchz

Untitled

Apr 6th, 2019
103
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. using namespace std;
  8.  
  9.  
  10. class Node {
  11.  public:
  12.   Node();
  13.   virtual bool Evaluate(const Date &date, const string &event) const = 0;
  14. };
  15.  
  16.  
  17. class EmptyNode : public Node {
  18.  public:
  19.   EmptyNode();
  20.  
  21.   bool Evaluate(const Date &date, const string &event) const override;
  22. };
  23.  
  24.  
  25. class DateComparisonNode : public Node {
  26.  public:
  27.   DateComparisonNode(const Comparison &comparison, const Date &date);
  28.  
  29.   bool Evaluate(const Date &date, const string &event) const override;
  30.  
  31.  private:
  32.   const Comparison _comparison;
  33.   const Date _date;
  34. };
  35.  
  36.  
  37. class EventComparisonNode : public Node {
  38.  public:
  39.   EventComparisonNode(const Comparison &comparison, const string &value);
  40.  
  41.   bool Evaluate(const Date &date, const string &event) const override;
  42.  
  43.  private:
  44.   const Comparison _comparison;
  45.   const string _value;
  46. };
  47.  
  48.  
  49. class LogicalOperationNode : public Node {
  50.  public:
  51.   LogicalOperationNode(const LogicalOperation &logical_operation, const shared_ptr<Node> &left,
  52.                        const shared_ptr<Node> &right);
  53.  
  54.   bool Evaluate(const Date &date, const string &event) const override;
  55.  
  56.  private:
  57.   const LogicalOperation _logical_operation;
  58.   const shared_ptr<Node> _left, _right;
  59. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement