Argentum_02

node.h

Apr 9th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.23 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include "date.h"
  4. #include <memory>
  5.  
  6. using namespace std;
  7.  
  8. enum Comparison{
  9.     Less,
  10.     LessOrEqual,
  11.     Greater,
  12.     GreaterOrEqual,
  13.     Equal,
  14.     NotEqual
  15. };
  16.  
  17. enum LogicalOperation{
  18.     And,
  19.     Or
  20. };
  21.  
  22.  
  23.  
  24. class Node{
  25. public:
  26.     virtual bool Evaluate(const Date &date,const std::string &event)=0;
  27. };
  28.  
  29. class EmptyNode: public Node{
  30. public:
  31.     bool Evaluate(const Date &date,const std::string &event) override;
  32. };
  33.  
  34. class DateComparisonNode : public Node{
  35. public:
  36.     DateComparisonNode(Comparison cmp, Date dt):Comp(cmp),data(dt){}
  37.     bool Evaluate(const Date &date,const std::string &event) override;
  38.     Comparison Comp;
  39.     Date data;
  40.  
  41. };
  42.  
  43. class EventComparisonNode : public Node{
  44. public:
  45.     EventComparisonNode(Comparison cmp, std::string str): Comp(cmp),Event(str){}
  46.     bool Evaluate(const Date &date,const std::string &event) override;
  47.     std::string Event;
  48.     Comparison Comp;
  49. };
  50.  
  51. class LogicalOperationNode: public Node{
  52. public:
  53.     LogicalOperationNode(LogicalOperation lo,shared_ptr<Node> nd1,shared_ptr<Node> nd2):operation(lo),left(nd1),right(nd2){}
  54.     bool Evaluate(const Date &date,const std::string &event) override;
  55. private:
  56.     LogicalOperation operation;
  57.     std::shared_ptr<Node> left;
  58.     std::shared_ptr<Node>  right;
  59. };
Add Comment
Please, Sign In to add comment