1#ifndef AMREX_BINITERATOR_H_
2#define AMREX_BINITERATOR_H_
3#include <AMReX_Config.H>
14 return T::is_particle_tile_data;
17template<
class T,
class...Args >
42 : m_items(a_items), m_perm(a_perm), m_index(start), m_stop(stop)
54 return std::make_pair(m_perm[m_index], m_items[m_perm[m_index]]);
67 if (m_i == m_not_found) {
68 return iterator(0, 0, m_permutation_ptr, m_items);
70 return iterator(m_offsets_ptr[m_i], m_offsets_ptr[m_i+1], m_permutation_ptr, m_items);
75 if (m_i == m_not_found) {
76 return iterator(0, 0, m_permutation_ptr, m_items);
78 return iterator(m_offsets_ptr[m_i+1], m_offsets_ptr[m_i+1], m_permutation_ptr, m_items);
84 : m_i(i), m_offsets_ptr(offsets_ptr), m_permutation_ptr(permutation_ptr), m_items(items)
93 static constexpr index_type m_not_found = std::numeric_limits<index_type>::max();
#define AMREX_GPU_HOST_DEVICE
Definition AMReX_GpuQualifiers.H:20
Definition AMReX_Amr.cpp:49
constexpr decltype(T::is_particle_tile_data) IsParticleTileData()
Definition AMReX_BinIterator.H:13
const int[]
Definition AMReX_BLProfiler.cpp:1664
Definition AMReX_BinIterator.H:38
__host__ __device__ auto operator*() const
Definition AMReX_BinIterator.H:52
__host__ __device__ bool operator!=(iterator const &) const
Definition AMReX_BinIterator.H:49
__host__ __device__ iterator(index_type start, index_type stop, const index_type *a_perm, const_pointer_input_type a_items)
Definition AMReX_BinIterator.H:40
__host__ __device__ void operator++()
Definition AMReX_BinIterator.H:46
Definition AMReX_BinIterator.H:24
__host__ __device__ iterator end() const
Definition AMReX_BinIterator.H:74
int index_type
Definition AMReX_BinIterator.H:25
__host__ __device__ BinIterator(index_type i, const index_type *offsets_ptr, const index_type *permutation_ptr, const_pointer_input_type items)
Definition AMReX_BinIterator.H:82
std::conditional_t< IsParticleTileData< T >(), T, const T * > const_pointer_type
Definition AMReX_BinIterator.H:30
__host__ __device__ iterator begin() const
Definition AMReX_BinIterator.H:65
std::conditional_t< IsParticleTileData< T >(), const T &, const T * > const_pointer_input_type
Definition AMReX_BinIterator.H:35