diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/RangeSet.hpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/core/RangeSet.hpp b/src/core/RangeSet.hpp index 2c138dc..b196dec 100644 --- a/src/core/RangeSet.hpp +++ b/src/core/RangeSet.hpp @@ -169,6 +169,16 @@ struct Range { { return Range(from, std::numeric_limits<T>::max()); } + + friend bool operator==(const Range<T> &lhs, const Range<T> &rhs) + { + return lhs.start == rhs.start && lhs.end == rhs.end; + } + + friend bool operator!=(const Range<T> &lhs, const Range<T> &rhs) + { + return !(lhs == rhs); + } }; /** @@ -341,6 +351,28 @@ public: { return this->ranges; } + + friend bool operator==(const RangeSet<T> &lhs, const RangeSet<T> &rhs) + { + if (lhs.ranges.size() != rhs.ranges.size()) { + return false; + } + auto leftIt = lhs.ranges.begin(); + auto rightIt = rhs.ranges.begin(); + while (leftIt != lhs.ranges.end()) { + if (*leftIt != *rightIt) { + return false; + } + leftIt++; + rightIt++; + } + return true; + } + + friend bool operator!=(const RangeSet<T> &lhs, const RangeSet<T> &rhs) + { + return !(lhs == rhs); + } }; } |