diff --git a/src/RangeSet.cpp b/src/RangeSet.cpp index 7e576761f..be0942a7c 100644 --- a/src/RangeSet.cpp +++ b/src/RangeSet.cpp @@ -21,15 +21,15 @@ int RangeSet::getFirst() const const_iterator it = begin(); if (it == end()) return RangeSetAbsent; - return it->lower(); + return lower(it); } int RangeSet::getNext(int v) const { for (const_iterator it = begin(); it != end(); ++it) { - if ((it->upper() - 1) > v) - return max(v + 1, it->lower()); + if (upper(it) > v) + return max(v + 1, lower(it)); } return RangeSetAbsent; } @@ -39,15 +39,15 @@ int RangeSet::getLast() const const_reverse_iterator it = rbegin(); if (it == rend()) return RangeSetAbsent; - return it->upper() - 1; + return upper(it); } int RangeSet::getPrev(int v) const { for (const_reverse_iterator it = rbegin(); it != rend(); ++it) { - if (it->lower() < v) - return min(v - 1, it->upper() - 1); + if (lower(it) < v) + return min(v - 1, upper(it)); } return RangeSetAbsent; } @@ -79,11 +79,11 @@ std::string RangeSet::toString() const { if (!ret.empty()) ret += ","; - if (it->lower() == (it->upper() - 1)) - ret += boost::lexical_cast(it->lower()); + if (lower(it) == upper(it)) + ret += boost::lexical_cast(lower(it)); else - ret += boost::lexical_cast(it->lower()) + "-" - + boost::lexical_cast(it->upper() - 1); + ret += boost::lexical_cast(lower(it)) + "-" + + boost::lexical_cast(upper(it)); } if (ret.empty()) return "empty"; diff --git a/src/RangeSet.h b/src/RangeSet.h index 3a395a5ed..c70acf43b 100644 --- a/src/RangeSet.h +++ b/src/RangeSet.h @@ -50,6 +50,12 @@ public: const_reverse_iterator rbegin() const { return mRanges.rbegin(); } const_reverse_iterator rend() const { return mRanges.rend(); } + static int lower(const_iterator& it) { return it->lower(); } + static int upper(const_iterator& it) { return it->upper() - 1; } + static int lower(const_reverse_iterator& it) { return it->lower(); } + static int upper(const_reverse_iterator& it) { return it->upper() - 1; } + + bool operator!=(const RangeSet& r) const { return mRanges != r.mRanges; } bool operator==(const RangeSet& r) const { return mRanges == r.mRanges; }