20 #ifndef OPM_ITERATOR_RANGE_HEADER 21 #define OPM_ITERATOR_RANGE_HEADER 24 #include <type_traits> 27 #include <opm/common/utility/gpuDecorators.hpp> 29 #define OPM_HOST_DEVICE 34 template <
class DataType>
36 OPM_HOST_DEVICE
iterator_range_pod(
const DataType* begin,
const DataType* end) : begin_(begin), end_(end) {}
39 OPM_HOST_DEVICE
size_t size()
const {
return std::distance(begin_,end_); }
40 OPM_HOST_DEVICE
bool empty()
const {
return begin_ == end_; }
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_;
57 OPM_HOST_DEVICE
iterator_range(Iter begin, Iter end) : begin_(begin), end_(end) {}
60 OPM_HOST_DEVICE
size_t size()
const {
return std::distance(begin_,end_); }
61 OPM_HOST_DEVICE
bool empty()
const {
return begin_ == end_; }
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_; }
75 template<
typename Iter>
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_; }
97 #endif // OPM_ITERATOR_RANGE_HEADER Definition: IteratorRange.hpp:76
Holds the implementation of the CpGrid as a pimple.
Definition: CellQuadrature.cpp:71
Definition: IteratorRange.hpp:35
Definition: IteratorRange.hpp:56