Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "node.h"
- using namespace std;
- //================================ DateComparisonNode ================================
- DateComparisonNode::DateComparisonNode(const Comparison _Cmp, const Date& _Date) : _Cmp(_Cmp), _Date(_Date) {}
- bool DateComparisonNode::Evaluate(const Date& _Date, const string& _Event) const
- {
- switch (_Cmp)
- {
- case Comparison::Less: return _Date < this->_Date; break;
- case Comparison::LessOrEqual: return _Date <= this->_Date; break;
- case Comparison::Greater: return _Date > this->_Date; break;
- case Comparison::GreaterOrEqual: return _Date >= this->_Date; break;
- case Comparison::Equal: return _Date == this->_Date; break;
- case Comparison::NotEqual: return _Date != this->_Date; break;
- default: return 0;
- }
- }
- //================================ EventComparisonNode ================================
- EventComparisonNode::EventComparisonNode(const Comparison& _Cmp, const string& _Event) : _Cmp(_Cmp), _Event(_Event) {}
- bool EventComparisonNode::Evaluate(const Date& _Date, const string& _event) const
- {
- //cout << _Event << " " << _event << '\n';
- switch (_Cmp)
- {
- case Comparison::Less:
- return _event < _Event;
- case Comparison::LessOrEqual:
- return _event <= _Event;
- case Comparison::Greater:
- return _event > _Event;
- case Comparison::GreaterOrEqual:
- return _event >= _Event;
- case Comparison::Equal:
- return _event == _Event;
- case Comparison::NotEqual:
- return _event != _Event;
- default:
- return 0;
- break;
- }
- }
- //================================ LogicalOperationNode ================================
- LogicalOperationNode::LogicalOperationNode(const LogicalOperation& _Operation,
- const shared_ptr<Node>& _Left,
- const shared_ptr<Node>& _Right)
- :_Operation(_Operation), _Left(_Left), _Right(_Right) {}
- bool LogicalOperationNode::Evaluate(const Date& _Date, const string& _Event) const
- {
- switch (_Operation)
- {
- case LogicalOperation::And:
- return _Left->Evaluate(_Date, _Event) && _Right->Evaluate(_Date, _Event); break;
- case LogicalOperation::Or:
- return _Left->Evaluate(_Date, _Event) || _Right->Evaluate(_Date, _Event); break;
- default:
- return 0;
- }
- }
- //================================ EmptyNode ================================
- bool EmptyNode::Evaluate(const Date& _Date, const string& _Event) const
- {
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment