23#include "rawspeedconfig.h"
32template <
typename T>
class Range final {
34 std::make_unsigned_t<T>
size;
39 template <
typename T2>
40 requires std::is_unsigned_v<T2>
43 constexpr T RAWSPEED_READNONE
begin()
const {
return base; }
49 return std::pair(lhs.
begin(), lhs.
end()) < std::pair(rhs.
begin(), rhs.
end());
52template <
typename Tr,
typename Tv>
54 if (pos < std::begin(r))
57 assert(pos >= std::begin(r));
58 return std::end(r) > pos;
66 if (std::begin(lhs) == std::begin(rhs))
69 const std::pair<const T&, const T&> ordered =
70 std::minmax(lhs, rhs, [](
const T& r0,
const T& r1) {
71 assert(std::begin(r0) != std::begin(r1));
72 return std::begin(r0) < std::begin(r1);
75 assert(std::begin(ordered.first) < std::begin(ordered.second));
76 return RangeContains(ordered.first, std::begin(ordered.second));
assert(dim.area() >=area)
constexpr Range()=default
constexpr Range(T base_, T2 size_)
std::make_unsigned_t< T > size
constexpr T RAWSPEED_READNONE end() const
constexpr T RAWSPEED_READNONE begin() const
constexpr Range()=default
bool operator<(const Range< T > &lhs, const Range< T > &rhs)
constexpr bool RAWSPEED_READNONE RangesOverlap(const T &lhs, const T &rhs)
constexpr bool RAWSPEED_READNONE RangeContains(const Tr &r, Tv pos)