cmAlgorithms: Add a range adaptor and API for adjusting a range.
This commit is contained in:
parent
27c6f017a1
commit
0c12f1ea0d
|
@ -122,6 +122,17 @@ struct Range
|
||||||
const_iterator begin() const { return Begin; }
|
const_iterator begin() const { return Begin; }
|
||||||
const_iterator end() const { return End; }
|
const_iterator end() const { return End; }
|
||||||
bool empty() const { return std::distance(Begin, End) == 0; }
|
bool empty() const { return std::distance(Begin, End) == 0; }
|
||||||
|
Range& advance(cmIML_INT_intptr_t amount)
|
||||||
|
{
|
||||||
|
std::advance(Begin, amount);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
Range& retreat(cmIML_INT_intptr_t amount)
|
||||||
|
{
|
||||||
|
std::advance(End, -amount);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
private:
|
private:
|
||||||
const_iterator Begin;
|
const_iterator Begin;
|
||||||
const_iterator End;
|
const_iterator End;
|
||||||
|
@ -135,6 +146,14 @@ ContainerAlgorithms::Range<Iter1> cmRange(Iter1 begin, Iter2 end)
|
||||||
return ContainerAlgorithms::Range<Iter1>(begin, end);
|
return ContainerAlgorithms::Range<Iter1>(begin, end);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename Range>
|
||||||
|
ContainerAlgorithms::Range<typename Range::const_iterator>
|
||||||
|
cmRange(Range const& range)
|
||||||
|
{
|
||||||
|
return ContainerAlgorithms::Range<typename Range::const_iterator>(
|
||||||
|
range.begin(), range.end());
|
||||||
|
}
|
||||||
|
|
||||||
template<typename Container>
|
template<typename Container>
|
||||||
void cmDeleteAll(Container const& c)
|
void cmDeleteAll(Container const& c)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue