22 #ifndef __M2ETIS_PUBSUB_FILTER_FILTEREXPRESSIONS_ANDEXP_H__
23 #define __M2ETIS_PUBSUB_FILTER_FILTEREXPRESSIONS_ANDEXP_H__
33 template<
typename EventType>
42 operand1_->Accept(filter_visitor);
43 operand2_->Accept(filter_visitor);
44 filter_visitor.
Visit(
this);
47 virtual operator boost::shared_ptr<FilterExp<EventType>>()
const {
48 return boost::make_shared<AndExp<EventType>>(*this);
52 virtual operator std::string()
const override {
53 return (std::string(
"AndExp") +
"(\n" + std::string(*operand1_) +
", \t\t " + std::string(*operand2_) +
")");
57 boost::shared_ptr<FilterExp<EventType>> operand1_;
58 boost::shared_ptr<FilterExp<EventType>> operand2_;
61 const AndExp * other_AndExp =
dynamic_cast<const AndExp *
>(&other_filter);
64 return (*operand1_ == *(other_AndExp->operand1_) && *operand2_ == *(other_AndExp->operand2_));
70 virtual size_t doHash()
const {
71 return std::hash<FilterExp<EventType>>()(*operand1_) ^ std::hash<FilterExp<EventType>>()(*operand2_);
75 template<
typename Archive>
76 void serialize(Archive & ar,
const unsigned int) {
77 ar & boost::serialization::base_object<FilterExp<EventType>>(*this);
AndExp(const boost::shared_ptr< FilterExp< EventType >> op1, const boost::shared_ptr< FilterExp< EventType >> op2)
friend class boost::serialization::access
virtual void Accept(FilterVisitor< EventType > &filter_visitor) const override
virtual void Visit(const FilterExp< EventType > *)=0