#ifndef BINARYMATCHER_H_ #define BINARYMATCHER_H_ #include "MatcherIF.h" template class BinaryMatcher: public MatcherIF { public: bool inverted; T mask, matchField; BinaryMatcher() : inverted(false), mask(0), matchField(0) { } BinaryMatcher(T mask, T match, bool inverted = false) : inverted(inverted), mask(mask), matchField(match) { } bool match(T input) { if (inverted) { return ~doMatch(input, mask, matchField); } else { return doMatch(input, mask, matchField); } } protected: bool doMatch(T input, T mask, T match) { match = match & mask; input = input & mask; if (input == match) { return true; } else { return false; } } }; #endif /* BINARYMATCHER_H_ */