O_Egor

node.cpp

Oct 15th, 2022
839
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.37 KB | None | 0 0
  1. #include "node.h"
  2.  
  3. using namespace std;
  4.  
  5. //================================ DateComparisonNode ================================
  6. DateComparisonNode::DateComparisonNode(const Comparison _Cmp, const Date& _Date) : _Cmp(_Cmp), _Date(_Date) {}
  7.  
  8. bool DateComparisonNode::Evaluate(const Date& _Date, const string& _Event) const
  9. {
  10.     switch (_Cmp)
  11.     {
  12.         case Comparison::Less: return _Date < this->_Date; break;
  13.         case Comparison::LessOrEqual: return _Date <= this->_Date; break;
  14.         case Comparison::Greater: return _Date > this->_Date; break;
  15.         case Comparison::GreaterOrEqual: return _Date >= this->_Date; break;
  16.         case Comparison::Equal: return _Date == this->_Date; break;
  17.         case Comparison::NotEqual: return _Date != this->_Date; break;
  18.         default: return 0;
  19.     }
  20. }
  21.  
  22. //================================ EventComparisonNode ================================
  23. EventComparisonNode::EventComparisonNode(const Comparison& _Cmp, const string& _Event) : _Cmp(_Cmp), _Event(_Event) {}
  24.  
  25. bool EventComparisonNode::Evaluate(const Date& _Date, const string& _event) const
  26. {
  27.     //cout << _Event << " " << _event << '\n';
  28.     switch (_Cmp)
  29.     {
  30.         case Comparison::Less:
  31.             return _event < _Event;
  32.         case Comparison::LessOrEqual:
  33.             return _event <= _Event;
  34.         case Comparison::Greater:
  35.             return _event > _Event;
  36.         case Comparison::GreaterOrEqual:
  37.             return _event >= _Event;
  38.         case Comparison::Equal:
  39.             return _event == _Event;
  40.         case Comparison::NotEqual:
  41.             return _event != _Event;
  42.         default:
  43.             return 0;
  44.             break;
  45.     }
  46. }
  47.  
  48. //================================ LogicalOperationNode ================================
  49. LogicalOperationNode::LogicalOperationNode(const LogicalOperation& _Operation,
  50.                                            const shared_ptr<Node>& _Left,
  51.                                            const shared_ptr<Node>& _Right)
  52.                                            :_Operation(_Operation), _Left(_Left), _Right(_Right) {}
  53.  
  54. bool LogicalOperationNode::Evaluate(const Date& _Date, const string& _Event) const
  55. {
  56.     switch (_Operation)
  57.     {
  58.         case LogicalOperation::And:
  59.             return _Left->Evaluate(_Date, _Event) && _Right->Evaluate(_Date, _Event); break;
  60.         case LogicalOperation::Or:
  61.             return _Left->Evaluate(_Date, _Event) || _Right->Evaluate(_Date, _Event); break;
  62.         default:
  63.             return 0;
  64.     }
  65. }
  66.  
  67. //================================ EmptyNode ================================
  68. bool EmptyNode::Evaluate(const Date& _Date, const string& _Event) const
  69. {
  70.     return 1;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment