48class ItemVectorViewConstIterator
52 friend class ItemVectorView;
53 template <
int Extent>
friend class ItemConnectedListView;
58 : m_shared_info(shared_info)
59 , m_local_id_ptr(local_id_ptr)
60 , m_local_id_offset(local_id_offset)
63 : m_shared_info(shared_info)
64 , m_local_id_ptr(local_id_ptr)
71 : m_shared_info(v.m_shared_info)
72 , m_local_id_ptr(v.m_local_id_ptr)
73 , m_local_id_offset(v.m_local_id_offset)
78 typedef ItemVectorViewConstIterator ThatClass;
79 typedef std::random_access_iterator_tag iterator_category;
90 typedef const Item* pointer;
92 typedef const Item& reference;
96 Item operator*()
const {
return Item(m_local_id_offset + (*m_local_id_ptr), m_shared_info); }
98 ThatClass& operator++()
103 ThatClass& operator--()
112 return this->m_local_id_ptr - b.m_local_id_ptr;
116 const Int32* ptr = a.m_local_id_ptr - v;
117 return ThatClass(a.m_shared_info, ptr, a.m_local_id_offset);
121 const Int32* ptr = a.m_local_id_ptr + v;
122 return ThatClass(a.m_shared_info, ptr, a.m_local_id_offset);
124 friend bool operator<(
const ThatClass& lhs,
const ThatClass& rhs)
126 return lhs.m_local_id_ptr <= rhs.m_local_id_ptr;
129 friend bool operator==(
const ThatClass& lhs,
const ThatClass& rhs)
131 return lhs.m_local_id_ptr == rhs.m_local_id_ptr;
133 friend bool operator!=(
const ThatClass& lhs,
const ThatClass& rhs)
135 return !(lhs == rhs);
138 ARCANE_DEPRECATED_REASON(
"Y2022: This method returns a temporary. Use 'operator*' instead")
139 Item operator->()
const {
return _itemInternal(); }
143 ItemSharedInfo* m_shared_info;
144 const Int32* m_local_id_ptr;
145 Int32 m_local_id_offset = 0;
149 inline ItemInternal* _itemInternal()
const
151 return m_shared_info->m_items_internal[m_local_id_offset + (*m_local_id_ptr)];
159class ItemVectorViewConstIteratorT
160:
public ItemVectorViewConstIterator
167 ItemVectorViewConstIteratorT(
ItemSharedInfo* shared_info,
const Int32* ARCANE_RESTRICT local_id_ptr,
168 Int32 local_id_offset)
169 : ItemVectorViewConstIterator(shared_info, local_id_ptr, local_id_offset)
171 ItemVectorViewConstIteratorT(
ItemSharedInfo* shared_info,
const Int32* ARCANE_RESTRICT local_id_ptr)
172 : ItemVectorViewConstIterator(shared_info, local_id_ptr)
179 : ItemVectorViewConstIterator(v)
184 typedef ItemVectorViewConstIteratorT<ItemType> ThatClass;
185 typedef ItemType value_type;
190 typedef const Item* pointer;
192 typedef const Item& reference;
196 ItemType operator*()
const {
return ItemType(m_local_id_offset + (*m_local_id_ptr), m_shared_info); }
198 ThatClass& operator++()
203 ThatClass& operator--()
210 return this->m_local_id_ptr - b.m_local_id_ptr;
214 const Int32* ptr = a.m_local_id_ptr - v;
215 return ThatClass(a.m_shared_info, ptr, a.m_local_id_offset);
219 const Int32* ptr = a.m_local_id_ptr + v;
220 return ThatClass(a.m_shared_info, ptr, a.m_local_id_offset);
225 ARCANE_DEPRECATED_REASON(
"Y2022: This method returns a temporary. Use 'operator*' instead")
226 ItemType operator->()
const {
return this->_itemInternal(); }
239class ARCANE_CORE_EXPORT ItemVectorView
245 friend ItemEnumeratorBase;
246 friend mesh::IndexedItemConnectivityAccessor;
251 using difference_type = std::ptrdiff_t;
252 using value_type =
Item;
253 using reference_type =
Item&;
254 using const_reference_type =
const Item&;
256 using SentinelType = const_iterator;
260 ARCANE_DEPRECATED_REASON(
"Y2022: Use constructor with ItemInfoListView instead")
262 : m_index_view(local_ids)
267 ARCANE_DEPRECATED_REASON(
"Y2022: Use constructor with ItemInfoListView instead")
276 ItemVectorView() =
default;
279 : m_index_view(view.
localIds(), view.m_local_id_offset, 0)
280 , m_shared_info(view.m_shared_info)
284 : m_index_view(local_ids, 0, 0)
285 , m_shared_info(item_info_list_view.m_item_shared_info)
289 , m_shared_info(item_info_list_view.m_item_shared_info)
294 : m_index_view(view.constLocalIds(), view.m_local_id_offset, 0)
295 , m_shared_info(view.m_shared_info)
300 : m_index_view(v.m_index_view)
301 , m_shared_info(v.m_shared_info)
307 : m_index_view(local_ids)
308 , m_shared_info(shared_info)
312 : m_index_view(local_ids, local_id_offset, 0)
313 , m_shared_info(shared_info)
318 ItemVectorView(
const ItemInternalArrayView& aitems,
const Int32ConstArrayView& local_ids,
bool)
319 : m_index_view(local_ids)
347 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this method")
348 ItemInternalArrayView
items()
const {
return m_shared_info->m_items_internal; }
366 return ItemVectorView(m_shared_info, m_index_view.subView(abegin, asize)._localIds(), _localIdOffset());
368 const_iterator begin()
const
370 return const_iterator(m_shared_info, m_index_view._data(), _localIdOffset());
372 SentinelType end()
const
374 return endIterator();
376 const_iterator endIterator()
const
378 return const_iterator(m_shared_info, (m_index_view._data() + this->size()), _localIdOffset());
394 const Int32* _localIdsData()
const {
return m_index_view._data(); }
395 Int32 _localIdOffset()
const {
return m_index_view._localIdOffset(); }
399 void _init(ItemInternalArrayView items)
401 m_shared_info = (size() > 0 && !items.empty()) ? ItemInternalCompatibility::_getSharedInfo(items[0]) : ItemSharedInfo::nullInstance();
403 void _init2(IItemFamily* family);
408 void _internalSwigSet(ItemVectorViewPOD* vpod);
419:
public ItemVectorView
427 using difference_type = std::ptrdiff_t;
428 using value_type = ItemType;
430 using reference_type = ItemType&;
432 using const_reference_type =
const ItemType&;
434 using SentinelType = const_iterator;
438 ARCANE_DEPRECATED_REASON(
"Y2022: Use constructor with ItemInfoListView instead")
440 : ItemVectorView(aitems, local_ids,
true)
443 ARCANE_DEPRECATED_REASON(
"Y2022: Use constructor with ItemInfoListView instead")
445 : ItemVectorView(aitems,
indexes,
true)
450 ItemVectorViewT() =
default;
451 ItemVectorViewT(
const ItemVectorView& rhs)
452 : ItemVectorView(rhs)
456 : ItemVectorView(rhs)
459 : ItemVectorView(rhs)
462 : ItemVectorView(item_info_list_view, local_ids)
465 : ItemVectorView(item_info_list_view,
indexes)
468 : ItemVectorView(family, local_ids)
471 : ItemVectorView(family,
indexes)
482 : ItemVectorView(shared_info, local_ids, local_id_offset)
487 ItemType operator[](
Integer index)
const
489 return ItemType(m_index_view[index], m_shared_info);
498 inline const_iterator begin()
const
500 return const_iterator(m_shared_info, _localIdsData(), _localIdOffset());
502 inline SentinelType end()
const
504 return const_iterator(m_shared_info, _localIdsData() + this->
size(), _localIdOffset());
506 inline const_iterator endIterator()
const
508 return const_iterator(m_shared_info, _localIdsData() + this->
size(), _localIdOffset());