80class ItemEnumeratorBase
88 ItemEnumeratorBase() =
default;
91 : m_view(local_ids, n, 0)
92 , m_group_impl(agroup)
96 : m_view(local_ids, 0)
97 , m_group_impl(
nullptr)
101 : m_view(local_ids, 0)
102 , m_group_impl(agroup)
106 : m_view(view.
localIds(), view.m_local_id_offset)
107 , m_group_impl(agroup)
110 : m_view(rhs.
localIds(), rhs._localIdOffset())
113 : m_view(rhs._localIds(), rhs._localIdOffset())
122 constexpr bool operator()() {
return m_index < m_view.m_size; }
125 constexpr bool hasNext() {
return m_index < m_view.m_size; }
143 ARCANE_DEPRECATED_REASON(
"Y2022: This method is internal to Arcane")
144 constexpr const
Int32* unguardedLocalIds()
const {
return m_view.m_local_ids; }
153 static constexpr int version() {
return 3; }
157 impl::ItemLocalIdListContainerView m_view;
159 const ItemGroupImpl* m_group_impl =
nullptr;
164 ItemEnumeratorBase(
const ItemEnumerator& rhs,
bool);
166 ItemEnumeratorBase(
const impl::ItemLocalIdListContainerView& view, Int32
index,
const ItemGroupImpl* agroup)
169 , m_group_impl(agroup)
173 explicit ItemEnumeratorBase(
const impl::ItemLocalIdListContainerView& view)
178 ItemInternal* _internal(ItemSharedInfo* si)
const
180 return si->m_items_internal[m_view.localId(m_index)];
182 constexpr const ItemInternalPtr* _unguardedItems(ItemSharedInfo* si)
const
184 return si->m_items_internal.data();
199class ItemEnumeratorBaseT
200:
public ItemEnumeratorBase
202 friend class SimdItemEnumeratorBase;
207 using LocalIdType =
typename ItemType::LocalIdType;
208 using BaseClass = ItemEnumeratorBase;
212 ItemEnumeratorBaseT()
214 , m_item(NULL_ITEM_LOCAL_ID, ItemSharedInfo::nullInstance())
218 : BaseClass(local_ids)
219 , m_item(NULL_ITEM_LOCAL_ID, shared_info)
223 : BaseClass(local_ids, agroup)
224 , m_item(NULL_ITEM_LOCAL_ID, items.m_item_shared_info)
227 : BaseClass(view, agroup)
228 , m_item(NULL_ITEM_LOCAL_ID, view.m_shared_info)
239 : ItemEnumeratorBaseT(view.m_shared_info, view.constLocalIds())
244 , m_item(NULL_ITEM_LOCAL_ID, rhs.m_shared_info)
249 , m_item(NULL_ITEM_LOCAL_ID, si)
257 : BaseClass(items, local_ids, n, agroup)
263 : BaseClass(local_ids, agroup)
277 ARCANE_DEPRECATED_REASON(
"Y2022: This method is internal to Arcane")
278 constexpr const ItemInternalPtr* unguardedItems()
const {
return _unguardedItems(m_item.m_shared_info); }
284 ARCANE_DEPRECATED_REASON(
"Y2022: This method is internal to Arcane")
285 constexpr ItemInternal* internal()
const {
return _internal(m_item.m_shared_info); }
289 constexpr ItemType operator*()
const
291 m_item.m_local_id = m_view.localId(m_index);
294 constexpr const ItemType* operator->()
const
296 m_item.m_local_id = m_view.localId(m_index);
300 constexpr LocalIdType asItemLocalId()
const
302 return LocalIdType{ m_view.localId(m_index) };
307 return LocalIdType{ m_view.localId(m_index) };
314 impl::ItemBase _internalItemBase()
const {
return m_item.itemBase(); }
318 mutable ItemType m_item = ItemType(NULL_ITEM_LOCAL_ID,
nullptr);
327 : ItemEnumeratorBase(view,
index, agroup)
332 void _init(
const ItemInternalPtr* items)
334 m_item.m_shared_info = ItemInternalCompatibility::_getSharedInfo(items,
count());