Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "node.h"
- DateComparisonNode::DateComparisonNode(const Comparison &comparison, const Date &date)
- : _comparison(comparison), _date(date) {}
- bool DateComparisonNode::Evaluate(const Date &date, const string &event) const {
- if (_comparison==Comparison::Equal) {
- return date==_date;
- }
- if (_comparison==Comparison::Greater) {
- return date > _date;
- }
- if (_comparison==Comparison::GreaterOrEqual) {
- return date >= _date;
- }
- if (_comparison==Comparison::Less) {
- return date < _date;
- }
- if (_comparison==Comparison::LessOrEqual) {
- return date <= _date;
- }
- if (_comparison==Comparison::NotEqual) {
- return date!=_date;
- }
- }
- EventComparisonNode::EventComparisonNode(const Comparison &comparison, const string &value)
- : _comparison(comparison), _value(value) {}
- bool EventComparisonNode::Evaluate(const Date &date, const string &event) const {
- if (_comparison==Comparison::Equal) {
- return _value==event;
- }
- if (_comparison==Comparison::NotEqual) {
- return _value!=event;
- }
- }
- LogicalOperationNode::LogicalOperationNode(const LogicalOperation &logical_operation,
- const shared_ptr<Node> &left,
- const shared_ptr<Node> &right)
- : _logical_operation(logical_operation),
- _left(left), _right(right) {}
- bool LogicalOperationNode::Evaluate(const Date &date, const string &event) const {
- if (_logical_operation==LogicalOperation::And) {
- return _left->Evaluate(date, event) && _right->Evaluate(date, event);
- }
- if (_logical_operation==LogicalOperation::Or) {
- return _left->Evaluate(date, event) || _right->Evaluate(date, event);
- }
- }
- bool EmptyNode::Evaluate(const Date &date, const string &event) const {
- return true;
- }
- Node::Node() {}
- EmptyNode::EmptyNode() {}
Advertisement
Add Comment
Please, Sign In to add comment