41class ItemLocalIdListViewIteratorSentinel
43 friend ItemLocalIdListViewConstIterator;
44 template <
typename ItemType>
friend class ItemLocalIdListViewT;
48 ItemLocalIdListViewIteratorSentinel() =
default;
52 constexpr ARCCORE_HOST_DEVICE ItemLocalIdListViewIteratorSentinel(
const Int32* local_id_ptr)
53 : m_local_id_ptr(local_id_ptr)
58 const Int32* m_local_id_ptr =
nullptr;
66class ItemLocalIdListViewConstIterator
70 constexpr ARCCORE_HOST_DEVICE ItemLocalIdListViewConstIterator(
const Int32* local_id_ptr,
Int32 local_id_offset)
71 : m_local_id_ptr(local_id_ptr)
72 , m_local_id_offset(local_id_offset)
77 typedef ItemLocalIdListViewConstIterator ThatClass;
78 typedef std::random_access_iterator_tag iterator_category;
88 constexpr ARCCORE_HOST_DEVICE
Int32 operator*()
const {
return m_local_id_offset + (*m_local_id_ptr); }
90 constexpr ARCCORE_HOST_DEVICE ThatClass& operator++()
95 constexpr ARCCORE_HOST_DEVICE ThatClass& operator--()
100 constexpr ARCCORE_HOST_DEVICE
void operator+=(
difference_type v) { m_local_id_ptr += v; }
101 constexpr ARCCORE_HOST_DEVICE
void operator-=(
difference_type v) { m_local_id_ptr -= v; }
102 constexpr ARCCORE_HOST_DEVICE
difference_type operator-(
const ThatClass& b)
const
104 return this->m_local_id_ptr - b.m_local_id_ptr;
106 constexpr ARCCORE_HOST_DEVICE
friend ThatClass operator-(
const ThatClass& a,
difference_type v)
108 const Int32* ptr = a.m_local_id_ptr - v;
109 return ThatClass(ptr, a.m_local_id_offset);
111 constexpr ARCCORE_HOST_DEVICE
friend ThatClass operator+(
const ThatClass& a,
difference_type v)
113 const Int32* ptr = a.m_local_id_ptr + v;
114 return ThatClass(ptr, a.m_local_id_offset);
116 constexpr ARCCORE_HOST_DEVICE
friend bool operator<(
const ThatClass& lhs,
const ThatClass& rhs)
118 return lhs.m_local_id_ptr <= rhs.m_local_id_ptr;
121 constexpr ARCCORE_HOST_DEVICE
friend bool operator==(
const ThatClass& lhs,
const ThatClass& rhs)
123 return lhs.m_local_id_ptr == rhs.m_local_id_ptr;
125 constexpr ARCCORE_HOST_DEVICE
friend bool operator!=(
const ThatClass& lhs,
const ThatClass& rhs)
127 return !(lhs == rhs);
129 constexpr ARCCORE_HOST_DEVICE
static bool
130 isEnd(
const ThatClass& lhs,
const ItemLocalIdListViewIteratorSentinel& rhs)
132 return lhs.m_local_id_ptr == rhs.m_local_id_ptr;
134 constexpr ARCCORE_HOST_DEVICE
friend bool
135 operator==(
const ThatClass& lhs,
const ItemLocalIdListViewIteratorSentinel& rhs)
137 return isEnd(lhs, rhs);
139 constexpr ARCCORE_HOST_DEVICE
friend bool
140 operator!=(
const ThatClass& lhs,
const ItemLocalIdListViewIteratorSentinel& rhs)
142 return !isEnd(lhs, rhs);
147 const Int32* m_local_id_ptr;
148 Int32 m_local_id_offset = 0;
158class ItemLocalIdListViewConstIteratorT
159:
public ItemLocalIdListViewConstIterator
165 constexpr ARCCORE_HOST_DEVICE ItemLocalIdListViewConstIteratorT(
const Int32* local_id_ptr,
Int32 local_id_offset)
166 : ItemLocalIdListViewConstIterator(local_id_ptr, local_id_offset)
172 using ThatClass = ItemLocalIdListViewConstIteratorT<ItemType>;
173 using value_type = LocalIdType;
177 constexpr ARCCORE_HOST_DEVICE LocalIdType operator*()
const
179 return LocalIdType(m_local_id_offset + (*m_local_id_ptr));
182 constexpr ARCCORE_HOST_DEVICE ThatClass& operator++()
187 constexpr ARCCORE_HOST_DEVICE ThatClass& operator--()
192 constexpr ARCCORE_HOST_DEVICE
difference_type operator-(
const ThatClass& b)
const
194 return this->m_local_id_ptr - b.m_local_id_ptr;
196 friend constexpr ARCCORE_HOST_DEVICE ThatClass operator-(
const ThatClass& a,
difference_type v)
198 const Int32* ptr = a.m_local_id_ptr - v;
199 return ThatClass(ptr, a.m_local_id_offset);
201 friend constexpr ARCCORE_HOST_DEVICE ThatClass operator+(
const ThatClass& a,
difference_type v)
203 const Int32* ptr = a.m_local_id_ptr + v;
204 return ThatClass(ptr, a.m_local_id_offset);
214class ARCANE_CORE_EXPORT ItemLocalIdListView
217 template <
typename ItemType>
friend class ItemLocalIdListViewT;
218 friend class ItemVectorView;
219 using impl::ItemLocalIdListContainerView::localId;
220 using impl::ItemLocalIdListContainerView::m_size;
224 using ThatClass = ItemLocalIdListView;
230 constexpr ARCCORE_HOST_DEVICE ItemLocalIdListView(
const Int32* ids,
Int32 s,
Int32 local_id_offset)
231 : BaseClass(ids, s, local_id_offset)
233 explicit constexpr ARCCORE_HOST_DEVICE ItemLocalIdListView(
const BaseClass& view)
243 constexpr ARCCORE_HOST_DEVICE
Int32 size()
const {
return m_size; }
248 friend ARCANE_CORE_EXPORT
bool operator==(
const ThatClass& lhs,
const ThatClass& rhs);
249 friend inline bool operator!=(
const ThatClass& lhs,
const ThatClass& rhs)
251 return !operator==(lhs, rhs);
253 friend ARCANE_CORE_EXPORT std::ostream& operator<<(std::ostream& o,
const ThatClass& lhs)
255 const BaseClass& v = lhs;
271class ItemLocalIdListViewT
272:
public ItemLocalIdListView
274 friend class ItemConnectivityContainerView;
276 friend ArcaneTest::MeshUnitTest;
278 friend class ItemInternalConnectivityList;
288 ItemLocalIdListViewT() =
default;
292 constexpr ARCCORE_HOST_DEVICE ItemLocalIdListViewT(
const Int32* ids,
Int32 s,
Int32 local_id_offset)
293 : ItemLocalIdListView(ids, s, local_id_offset)
296 : ItemLocalIdListView(view)
301 constexpr ARCCORE_HOST_DEVICE LocalIdType operator[](
Int32 i)
const {
return LocalIdType(localId(i)); }
303 constexpr ARCCORE_HOST_DEVICE const_iterator begin()
const
305 return const_iterator(m_local_ids, m_local_id_offset);
307 constexpr ARCCORE_HOST_DEVICE SentinelType end()
const
309 return SentinelType(m_local_ids + m_size);
311 constexpr ARCCORE_HOST_DEVICE const_iterator endIterator()
const
313 return const_iterator(m_local_ids + m_size, m_local_id_offset);