O_Egor

node.h

Oct 15th, 2022
734
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. #include "date.h"
  3. #include <memory>
  4.  
  5. using namespace std;
  6.  
  7. enum Comparison
  8. {
  9.     Greater,
  10.     GreaterOrEqual,
  11.     Less,
  12.     LessOrEqual,
  13.     Equal,
  14.     NotEqual
  15. };
  16.  
  17. enum LogicalOperation
  18. {
  19.     Or,
  20.     And
  21. };
  22.  
  23. class Node
  24. {
  25. public:
  26.     virtual bool Evaluate(const Date& _Date, const string& _Event) const = 0;
  27. };
  28.  
  29. class EmptyNode : public Node
  30. {
  31. public:
  32.     bool Evaluate(const Date& _Date, const string& _Event) const override;
  33. };
  34.  
  35. class DateComparisonNode : public Node
  36. {
  37. public:
  38.     DateComparisonNode(const Comparison _Cmp, const Date& _Date);
  39.    
  40.     bool Evaluate(const Date& _Date, const string& _Event) const override;
  41.  
  42. private:
  43.     const Comparison _Cmp;
  44.     const Date _Date;
  45. };
  46.  
  47. class EventComparisonNode : public Node
  48. {
  49. public:
  50.     EventComparisonNode(const Comparison& _Cmp, const string& _Event);
  51.  
  52.     bool Evaluate(const Date& _Date, const string& _Event) const override;
  53.  
  54. private:
  55.     const Comparison _Cmp;
  56.     const string _Event;
  57. };
  58.  
  59. class LogicalOperationNode : public Node
  60. {
  61. public:
  62.     LogicalOperationNode(const LogicalOperation& _Operation, const shared_ptr<Node>& _Left, const shared_ptr<Node>& _Right);
  63.  
  64.     bool Evaluate(const Date& _Date, const string& _Event) const override;
  65.  
  66. private:
  67.     const LogicalOperation _Operation;
  68.     const shared_ptr<Node> _Left, _Right;
  69. };
Advertisement
Add Comment
Please, Sign In to add comment