|
|
@@ -5,6 +5,8 @@
|
|
|
|
|
|
#include "cmConfigure.h" // IWYU pragma: keep
|
|
|
|
|
|
+#include "cmRange.h"
|
|
|
+
|
|
|
#include "cm_kwiml.h"
|
|
|
#include <algorithm>
|
|
|
#include <functional>
|
|
|
@@ -156,69 +158,12 @@ private:
|
|
|
};
|
|
|
}
|
|
|
|
|
|
-template <typename const_iterator_>
|
|
|
-struct cmRange
|
|
|
-{
|
|
|
- typedef const_iterator_ const_iterator;
|
|
|
- typedef typename std::iterator_traits<const_iterator>::value_type value_type;
|
|
|
- typedef typename std::iterator_traits<const_iterator>::difference_type
|
|
|
- difference_type;
|
|
|
- cmRange(const_iterator begin_, const_iterator end_)
|
|
|
- : Begin(begin_)
|
|
|
- , End(end_)
|
|
|
- {
|
|
|
- }
|
|
|
- const_iterator begin() const { return Begin; }
|
|
|
- const_iterator end() const { return End; }
|
|
|
- bool empty() const { return std::distance(Begin, End) == 0; }
|
|
|
- difference_type size() const { return std::distance(Begin, End); }
|
|
|
-
|
|
|
- cmRange& advance(KWIML_INT_intptr_t amount) &
|
|
|
- {
|
|
|
- std::advance(this->Begin, amount);
|
|
|
- return *this;
|
|
|
- }
|
|
|
- cmRange advance(KWIML_INT_intptr_t amount) &&
|
|
|
- {
|
|
|
- std::advance(this->Begin, amount);
|
|
|
- return std::move(*this);
|
|
|
- }
|
|
|
-
|
|
|
- cmRange& retreat(KWIML_INT_intptr_t amount) &
|
|
|
- {
|
|
|
- std::advance(End, -amount);
|
|
|
- return *this;
|
|
|
- }
|
|
|
-
|
|
|
- cmRange retreat(KWIML_INT_intptr_t amount) &&
|
|
|
- {
|
|
|
- std::advance(End, -amount);
|
|
|
- return std::move(*this);
|
|
|
- }
|
|
|
-
|
|
|
-private:
|
|
|
- const_iterator Begin;
|
|
|
- const_iterator End;
|
|
|
-};
|
|
|
-
|
|
|
typedef cmRange<std::vector<std::string>::const_iterator> cmStringRange;
|
|
|
|
|
|
class cmListFileBacktrace;
|
|
|
typedef cmRange<std::vector<cmListFileBacktrace>::const_iterator>
|
|
|
cmBacktraceRange;
|
|
|
|
|
|
-template <typename Iter1, typename Iter2>
|
|
|
-cmRange<Iter1> cmMakeRange(Iter1 begin, Iter2 end)
|
|
|
-{
|
|
|
- return cmRange<Iter1>(begin, end);
|
|
|
-}
|
|
|
-
|
|
|
-template <typename Range>
|
|
|
-cmRange<typename Range::const_iterator> cmMakeRange(Range const& range)
|
|
|
-{
|
|
|
- return cmRange<typename Range::const_iterator>(range.begin(), range.end());
|
|
|
-}
|
|
|
-
|
|
|
template <typename Range>
|
|
|
void cmDeleteAll(Range const& r)
|
|
|
{
|
|
|
@@ -334,14 +279,6 @@ typename Range::const_iterator cmFindNot(Range const& r, T const& t)
|
|
|
return std::find_if(r.begin(), r.end(), [&t](T const& i) { return i != t; });
|
|
|
}
|
|
|
|
|
|
-template <typename Range>
|
|
|
-cmRange<typename Range::const_reverse_iterator> cmReverseRange(
|
|
|
- Range const& range)
|
|
|
-{
|
|
|
- return cmRange<typename Range::const_reverse_iterator>(range.rbegin(),
|
|
|
- range.rend());
|
|
|
-}
|
|
|
-
|
|
|
template <class Iter>
|
|
|
std::reverse_iterator<Iter> cmMakeReverseIterator(Iter it)
|
|
|
{
|