chzchz

Untitled

Apr 6th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.86 KB | None | 0 0
  1. #include "node.h"
  2.  
  3.  
  4. DateComparisonNode::DateComparisonNode(const Comparison &comparison, const Date &date)
  5.     : _comparison(comparison), _date(date) {}
  6.  
  7. bool DateComparisonNode::Evaluate(const Date &date, const string &event) const {
  8.   if (_comparison==Comparison::Equal) {
  9.     return date==_date;
  10.   }
  11.  
  12.   if (_comparison==Comparison::Greater) {
  13.     return date > _date;
  14.   }
  15.  
  16.   if (_comparison==Comparison::GreaterOrEqual) {
  17.     return date >= _date;
  18.   }
  19.  
  20.   if (_comparison==Comparison::Less) {
  21.     return date < _date;
  22.   }
  23.  
  24.   if (_comparison==Comparison::LessOrEqual) {
  25.     return date <= _date;
  26.   }
  27.  
  28.   if (_comparison==Comparison::NotEqual) {
  29.     return date!=_date;
  30.   }
  31. }
  32.  
  33. EventComparisonNode::EventComparisonNode(const Comparison &comparison, const string &value)
  34.     : _comparison(comparison), _value(value) {}
  35.  
  36. bool EventComparisonNode::Evaluate(const Date &date, const string &event) const {
  37.   if (_comparison==Comparison::Equal) {
  38.     return _value==event;
  39.   }
  40.   if (_comparison==Comparison::NotEqual) {
  41.     return _value!=event;
  42.   }
  43. }
  44.  
  45. LogicalOperationNode::LogicalOperationNode(const LogicalOperation &logical_operation,
  46.                                            const shared_ptr<Node> &left,
  47.                                            const shared_ptr<Node> &right)
  48.     : _logical_operation(logical_operation),
  49.       _left(left), _right(right) {}
  50.  
  51. bool LogicalOperationNode::Evaluate(const Date &date, const string &event) const {
  52.   if (_logical_operation==LogicalOperation::And) {
  53.     return _left->Evaluate(date, event) && _right->Evaluate(date, event);
  54.   }
  55.   if (_logical_operation==LogicalOperation::Or) {
  56.     return _left->Evaluate(date, event) || _right->Evaluate(date, event);
  57.   }
  58. }
  59.  
  60. bool EmptyNode::Evaluate(const Date &date, const string &event) const {
  61.   return true;
  62. }
  63.  
  64. Node::Node() {}
  65.  
  66. EmptyNode::EmptyNode() {}
Advertisement
Add Comment
Please, Sign In to add comment