forked from OctaForge/libostd
minor renames
parent
e98b8946ae
commit
de7ceba269
28
octa/range.h
28
octa/range.h
|
@ -12,11 +12,11 @@
|
||||||
#include "octa/utility.h"
|
#include "octa/utility.h"
|
||||||
|
|
||||||
namespace octa {
|
namespace octa {
|
||||||
struct InputRange {};
|
struct InputRangeTag {};
|
||||||
struct OutputRange {};
|
struct OutputRangeTag {};
|
||||||
struct ForwardRange {};
|
struct ForwardRangeTag {};
|
||||||
struct BidirectionalRange {};
|
struct BidirectionalRangeTag {};
|
||||||
struct RandomAccessRange {};
|
struct RandomAccessRangeTag {};
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
struct RangeTraits {
|
struct RangeTraits {
|
||||||
|
@ -47,7 +47,7 @@ namespace octa {
|
||||||
|
|
||||||
template<typename B, typename C, typename V, typename R = V &,
|
template<typename B, typename C, typename V, typename R = V &,
|
||||||
typename S = size_t
|
typename S = size_t
|
||||||
> struct InputRangeBase {
|
> struct InputRange {
|
||||||
typedef C range_category;
|
typedef C range_category;
|
||||||
typedef S size_type;
|
typedef S size_type;
|
||||||
typedef V value_type;
|
typedef V value_type;
|
||||||
|
@ -62,15 +62,15 @@ namespace octa {
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename V, typename R = V &, typename S = size_t>
|
template<typename V, typename R = V &, typename S = size_t>
|
||||||
struct OutputRangeBase {
|
struct OutputRange {
|
||||||
typedef OutputRange range_category;
|
typedef OutputRangeTag range_category;
|
||||||
typedef S size_type;
|
typedef S size_type;
|
||||||
typedef V value_type;
|
typedef V value_type;
|
||||||
typedef R reference;
|
typedef R reference;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
struct ReverseRange: InputRangeBase<ReverseRange<T>,
|
struct ReverseRange: InputRange<ReverseRange<T>,
|
||||||
typename RangeTraits<T>::range_category,
|
typename RangeTraits<T>::range_category,
|
||||||
typename RangeTraits<T>::value_type,
|
typename RangeTraits<T>::value_type,
|
||||||
typename RangeTraits<T>::reference,
|
typename RangeTraits<T>::reference,
|
||||||
|
@ -145,7 +145,7 @@ namespace octa {
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
struct MoveRange: InputRangeBase<MoveRange<T>,
|
struct MoveRange: InputRange<MoveRange<T>,
|
||||||
typename RangeTraits<T>::range_category,
|
typename RangeTraits<T>::range_category,
|
||||||
typename RangeTraits<T>::value_type,
|
typename RangeTraits<T>::value_type,
|
||||||
typename RangeTraits<T>::value_type &&,
|
typename RangeTraits<T>::value_type &&,
|
||||||
|
@ -215,7 +215,7 @@ namespace octa {
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
struct NumberRange: InputRangeBase<NumberRange<T>, ForwardRange, T> {
|
struct NumberRange: InputRange<NumberRange<T>, ForwardRangeTag, T> {
|
||||||
NumberRange(): p_a(0), p_b(0), p_step(0) {}
|
NumberRange(): p_a(0), p_b(0), p_step(0) {}
|
||||||
NumberRange(const NumberRange &it): p_a(it.p_a), p_b(it.p_b),
|
NumberRange(const NumberRange &it): p_a(it.p_a), p_b(it.p_b),
|
||||||
p_step(it.p_step) {}
|
p_step(it.p_step) {}
|
||||||
|
@ -248,7 +248,7 @@ namespace octa {
|
||||||
}
|
}
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
struct PointerRange: InputRangeBase<PointerRange<T>, RandomAccessRange, T> {
|
struct PointerRange: InputRange<PointerRange<T>, RandomAccessRangeTag, T> {
|
||||||
PointerRange(): p_beg(nullptr), p_end(nullptr) {}
|
PointerRange(): p_beg(nullptr), p_end(nullptr) {}
|
||||||
PointerRange(const PointerRange &v): p_beg(v.p_beg), p_end(v.p_end) {}
|
PointerRange(const PointerRange &v): p_beg(v.p_beg), p_end(v.p_end) {}
|
||||||
PointerRange(T *beg, T *end): p_beg(beg), p_end(end) {}
|
PointerRange(T *beg, T *end): p_beg(beg), p_end(end) {}
|
||||||
|
@ -305,8 +305,8 @@ namespace octa {
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename T>
|
template<typename T>
|
||||||
struct EnumeratedRange: InputRangeBase<EnumeratedRange<T>,
|
struct EnumeratedRange: InputRange<EnumeratedRange<T>,
|
||||||
InputRange, typename RangeTraits<T>::value_type,
|
InputRangeTag, typename RangeTraits<T>::value_type,
|
||||||
EnumeratedValue<typename RangeTraits<T>::reference,
|
EnumeratedValue<typename RangeTraits<T>::reference,
|
||||||
typename RangeTraits<T>::size_type>,
|
typename RangeTraits<T>::size_type>,
|
||||||
typename RangeTraits<T>::size_type
|
typename RangeTraits<T>::size_type
|
||||||
|
|
Loading…
Reference in New Issue