This commit is contained in:
q66 2015-05-30 01:46:50 +01:00
parent 9f37057e51
commit 51b210e1d6

View file

@ -242,6 +242,11 @@ namespace octa {
} }
}; };
template<typename R>
RangeDifference<R> operator-(const R &lhs, const R &rhs) {
return rhs.distance(lhs);
}
template<typename R> template<typename R>
RangeSize<R> __octa_pop_first_n(R &range, RangeSize<R> n) { RangeSize<R> __octa_pop_first_n(R &range, RangeSize<R> n) {
for (RangeSize<R> i = 0; i < n; ++i) for (RangeSize<R> i = 0; i < n; ++i)
@ -899,14 +904,8 @@ namespace octa {
return p_end.next(); return p_end.next();
} }
RangeReference<T> first() const { RangeReference<T> first() const { return *p_beg; }
return p_beg.get(); RangeReference<T> last() const { return *(p_end - 1); }
}
RangeReference<T> last() const {
auto copy = p_end;
copy.prev();
return copy.get();
}
bool equals_first(const HalfRange &range) const { bool equals_first(const HalfRange &range) const {
return p_beg == range.p_beg; return p_beg == range.p_beg;
@ -916,15 +915,13 @@ namespace octa {
} }
RangeDifference<T> distance_first(const HalfRange &range) const { RangeDifference<T> distance_first(const HalfRange &range) const {
return p_beg.distance(range.p_beg); return range.p_beg - p_beg;
} }
RangeDifference<T> distance_last(const HalfRange &range) const { RangeDifference<T> distance_last(const HalfRange &range) const {
return p_end.distance(range.p_end); return range.p_end - p_end;
} }
RangeSize<T> size() const { RangeSize<T> size() const { return p_end - p_beg; }
return p_end - p_beg;
}
HalfRange<T> slice(RangeSize<T> start, RangeSize<T> end) const { HalfRange<T> slice(RangeSize<T> start, RangeSize<T> end) const {
return HalfRange<T>(p_beg + start, p_beg + end); return HalfRange<T>(p_beg + start, p_beg + end);