Skip to content

Commit

Permalink
include/interval_set: clean up std usage
Browse files Browse the repository at this point in the history
Signed-off-by: Sage Weil <sage@redhat.com>
  • Loading branch information
liewegas committed Jan 20, 2016
1 parent 17ec590 commit 792a789
Showing 1 changed file with 32 additions and 33 deletions.
65 changes: 32 additions & 33 deletions src/include/interval_set.h
Expand Up @@ -19,7 +19,6 @@
#include <iterator>
#include <map>
#include <ostream>
using namespace std;

#include "encoding.h"

Expand Down Expand Up @@ -56,7 +55,7 @@ class interval_set {
}

// Dereference this iterator to get a pair.
pair < T, T > &operator*() {
std::pair < T, T > &operator*() {
return *_iter;
}

Expand Down Expand Up @@ -93,7 +92,7 @@ class interval_set {
friend class interval_set<T>::const_iterator;

protected:
typename map<T,T>::iterator _iter;
typename std::map<T,T>::iterator _iter;
friend class interval_set<T>;
};

Expand All @@ -120,7 +119,7 @@ class interval_set {
}

// Dereference this iterator to get a pair.
pair < T, T > operator*() const {
std::pair < T, T > operator*() const {
return *_iter;
}

Expand Down Expand Up @@ -150,7 +149,7 @@ class interval_set {
}

protected:
typename map<T,T>::const_iterator _iter;
typename std::map<T,T>::const_iterator _iter;
};

interval_set() : _size(0) {}
Expand Down Expand Up @@ -186,8 +185,8 @@ class interval_set {

// helpers
private:
typename map<T,T>::const_iterator find_inc(T start) const {
typename map<T,T>::const_iterator p = m.lower_bound(start); // p->first >= start
typename std::map<T,T>::const_iterator find_inc(T start) const {
typename std::map<T,T>::const_iterator p = m.lower_bound(start); // p->first >= start
if (p != m.begin() &&
(p == m.end() || p->first > start)) {
p--; // might overlap?
Expand All @@ -197,8 +196,8 @@ class interval_set {
return p;
}

typename map<T,T>::iterator find_inc_m(T start) {
typename map<T,T>::iterator p = m.lower_bound(start);
typename std::map<T,T>::iterator find_inc_m(T start) {
typename std::map<T,T>::iterator p = m.lower_bound(start);
if (p != m.begin() &&
(p == m.end() || p->first > start)) {
p--; // might overlap?
Expand All @@ -208,8 +207,8 @@ class interval_set {
return p;
}

typename map<T,T>::const_iterator find_adj(T start) const {
typename map<T,T>::const_iterator p = m.lower_bound(start);
typename std::map<T,T>::const_iterator find_adj(T start) const {
typename std::map<T,T>::const_iterator p = m.lower_bound(start);
if (p != m.begin() &&
(p == m.end() || p->first > start)) {
p--; // might touch?
Expand All @@ -219,8 +218,8 @@ class interval_set {
return p;
}

typename map<T,T>::iterator find_adj_m(T start) {
typename map<T,T>::iterator p = m.lower_bound(start);
typename std::map<T,T>::iterator find_adj_m(T start) {
typename std::map<T,T>::iterator p = m.lower_bound(start);
if (p != m.begin() &&
(p == m.end() || p->first > start)) {
p--; // might touch?
Expand Down Expand Up @@ -248,15 +247,15 @@ class interval_set {
void decode(bufferlist::iterator& bl) {
::decode(m, bl);
_size = 0;
for (typename map<T,T>::const_iterator p = m.begin();
for (typename std::map<T,T>::const_iterator p = m.begin();
p != m.end();
p++)
_size += p->second;
}
void decode_nohead(int n, bufferlist::iterator& bl) {
::decode_nohead(n, m, bl);
_size = 0;
for (typename map<T,T>::const_iterator p = m.begin();
for (typename std::map<T,T>::const_iterator p = m.begin();
p != m.end();
p++)
_size += p->second;
Expand All @@ -268,7 +267,7 @@ class interval_set {
}

bool contains(T i, T *pstart=0, T *plen=0) const {
typename map<T,T>::const_iterator p = find_inc(i);
typename std::map<T,T>::const_iterator p = find_inc(i);
if (p == m.end()) return false;
if (p->first > i) return false;
if (p->first+p->second <= i) return false;
Expand All @@ -280,7 +279,7 @@ class interval_set {
return true;
}
bool contains(T start, T len) const {
typename map<T,T>::const_iterator p = find_inc(start);
typename std::map<T,T>::const_iterator p = find_inc(start);
if (p == m.end()) return false;
if (p->first > start) return false;
if (p->first+p->second <= start) return false;
Expand All @@ -303,33 +302,33 @@ class interval_set {
}
T range_start() const {
assert(!empty());
typename map<T,T>::const_iterator p = m.begin();
typename std::map<T,T>::const_iterator p = m.begin();
return p->first;
}
T range_end() const {
assert(!empty());
typename map<T,T>::const_iterator p = m.end();
typename std::map<T,T>::const_iterator p = m.end();
p--;
return p->first+p->second;
}

// interval start after p (where p not in set)
bool starts_after(T i) const {
assert(!contains(i));
typename map<T,T>::const_iterator p = find_inc(i);
typename std::map<T,T>::const_iterator p = find_inc(i);
if (p == m.end()) return false;
return true;
}
T start_after(T i) const {
assert(!contains(i));
typename map<T,T>::const_iterator p = find_inc(i);
typename std::map<T,T>::const_iterator p = find_inc(i);
return p->first;
}

// interval end that contains start
T end_after(T start) const {
assert(contains(start));
typename map<T,T>::const_iterator p = find_inc(start);
typename std::map<T,T>::const_iterator p = find_inc(start);
return p->first+p->second;
}

Expand All @@ -341,7 +340,7 @@ class interval_set {
//cout << "insert " << start << "~" << len << endl;
assert(len > 0);
_size += len;
typename map<T,T>::iterator p = find_adj_m(start);
typename std::map<T,T>::iterator p = find_adj_m(start);
if (p == m.end()) {
m[start] = len; // new interval
if (pstart)
Expand All @@ -359,7 +358,7 @@ class interval_set {
assert(p->first + p->second == start);
p->second += len; // append to end

typename map<T,T>::iterator n = p;
typename std::map<T,T>::iterator n = p;
n++;
if (n != m.end() &&
start+len == n->first) { // combine with next, too!
Expand Down Expand Up @@ -408,7 +407,7 @@ class interval_set {
}

void erase(T start, T len) {
typename map<T,T>::iterator p = find_inc_m(start);
typename std::map<T,T>::iterator p = find_inc_m(start);

_size -= len;
assert(_size >= 0);
Expand All @@ -430,14 +429,14 @@ class interval_set {


void subtract(const interval_set &a) {
for (typename map<T,T>::const_iterator p = a.m.begin();
for (typename std::map<T,T>::const_iterator p = a.m.begin();
p != a.m.end();
p++)
erase(p->first, p->second);
}

void insert(const interval_set &a) {
for (typename map<T,T>::const_iterator p = a.m.begin();
for (typename std::map<T,T>::const_iterator p = a.m.begin();
p != a.m.end();
p++)
insert(p->first, p->second);
Expand All @@ -449,8 +448,8 @@ class interval_set {
assert(&b != this);
clear();

typename map<T,T>::const_iterator pa = a.m.begin();
typename map<T,T>::const_iterator pb = b.m.begin();
typename std::map<T,T>::const_iterator pa = a.m.begin();
typename std::map<T,T>::const_iterator pb = b.m.begin();

while (pa != a.m.end() && pb != b.m.end()) {
// passing?
Expand Down Expand Up @@ -501,7 +500,7 @@ class interval_set {
}

bool subset_of(const interval_set &big) const {
for (typename map<T,T>::const_iterator i = m.begin();
for (typename std::map<T,T>::const_iterator i = m.begin();
i != m.end();
i++)
if (!big.contains(i->first, i->second)) return false;
Expand All @@ -515,7 +514,7 @@ class interval_set {
*/
void span_of(const interval_set &other, T start, T len) {
clear();
typename map<T,T>::const_iterator p = other.find_inc(start);
typename std::map<T,T>::const_iterator p = other.find_inc(start);
if (p == other.m.end())
return;
if (p->first < start) {
Expand Down Expand Up @@ -546,12 +545,12 @@ class interval_set {
private:
// data
int64_t _size;
map<T,T> m; // map start -> len
std::map<T,T> m; // map start -> len
};


template<class T>
inline ostream& operator<<(ostream& out, const interval_set<T> &s) {
inline std::ostream& operator<<(std::ostream& out, const interval_set<T> &s) {
out << "[";
const char *prequel = "";
for (typename interval_set<T>::const_iterator i = s.begin();
Expand Down

0 comments on commit 792a789

Please sign in to comment.