35struct iterator_range_pod {
36 OPM_HOST_DEVICE iterator_range_pod(
const DataType* begin,
const DataType* end) : begin_(begin), end_(end) {}
37 iterator_range_pod() =
default;
39 OPM_HOST_DEVICE
size_t size()
const {
return std::distance(begin_,end_); }
40 OPM_HOST_DEVICE
bool empty()
const {
return begin_ == end_; }
41 OPM_HOST_DEVICE
bool operator==(
const iterator_range_pod<DataType>& rhs)
const
42 {
return (begin_ == rhs.begin_) && (end_ == rhs.end_); }
44 OPM_HOST_DEVICE
const DataType& operator[](
int idx)
const {
return begin_[idx]; }
46 OPM_HOST_DEVICE
const DataType* begin()
const {
return begin_; }
47 OPM_HOST_DEVICE
const DataType* end()
const {
return end_; }
50 const DataType* begin_;
56struct iterator_range {
57 OPM_HOST_DEVICE iterator_range(Iter begin, Iter end) : begin_(begin), end_(end) {}
58 iterator_range() =
default;
60 OPM_HOST_DEVICE
size_t size()
const {
return std::distance(begin_,end_); }
61 OPM_HOST_DEVICE
bool empty()
const {
return begin_ == end_; }
62 OPM_HOST_DEVICE
bool operator==(
const iterator_range<Iter>& rhs)
const
63 {
return (begin_ == rhs.begin_) && (end_ == rhs.end_); }
65 OPM_HOST_DEVICE
const typename Iter::value_type& operator[](
int idx)
const
66 {
return *(begin_+ idx); }
68 OPM_HOST_DEVICE Iter begin()
const {
return begin_; }
69 OPM_HOST_DEVICE Iter end()
const {
return end_; }
76struct mutable_iterator_range {
77 OPM_HOST_DEVICE mutable_iterator_range(Iter begin, Iter end) : begin_(begin), end_(end) {}
78 mutable_iterator_range() =
default;
80 OPM_HOST_DEVICE
size_t size()
const {
return std::distance(begin_,end_); }
81 OPM_HOST_DEVICE
bool empty()
const {
return begin_ == end_; }
82 OPM_HOST_DEVICE
bool operator==(
const Iter& rhs)
const
83 {
return (begin_ == rhs.begin_) && (end_ == rhs.end_); }
85 OPM_HOST_DEVICE
typename Iter::value_type& operator[](
int idx)
86 {
return begin_[idx]; }
88 OPM_HOST_DEVICE Iter begin()
const {
return begin_; }
89 OPM_HOST_DEVICE Iter end()
const {
return end_; }