12#ifndef ARCANE_CORE_ITEMVECTORVIEW_H
13#define ARCANE_CORE_ITEMVECTORVIEW_H
17#include "arcane/core/ItemInternalVectorView.h"
18#include "arcane/core/ItemIndexArrayView.h"
19#include "arcane/core/ItemInfoListView.h"
20#include "arcane/core/ItemConnectedListView.h"
28class ItemVectorViewPOD;
31class IndexedItemConnectivityAccessor;
59 , m_local_id_offset(local_id_offset)
70 : m_shared_info(v.m_shared_info)
71 , m_local_id_ptr(v.m_local_id_ptr)
72 , m_local_id_offset(v.m_local_id_offset)
78 typedef std::random_access_iterator_tag iterator_category;
95 Item operator*()
const {
return Item(m_local_id_offset + (*m_local_id_ptr), m_shared_info); }
97 ThatClass& operator++()
102 ThatClass& operator--()
111 return this->m_local_id_ptr - b.m_local_id_ptr;
115 const Int32* ptr = a.m_local_id_ptr - v;
116 return ThatClass(a.m_shared_info, ptr, a.m_local_id_offset);
120 const Int32* ptr = a.m_local_id_ptr + v;
121 return ThatClass(a.m_shared_info, ptr, a.m_local_id_offset);
123 friend bool operator<(
const ThatClass& lhs,
const ThatClass& rhs)
125 return lhs.m_local_id_ptr <= rhs.m_local_id_ptr;
130 return lhs.m_local_id_ptr ==
rhs.m_local_id_ptr;
132 friend bool operator!=(
const ThatClass&
lhs,
const ThatClass&
rhs)
137 ARCANE_DEPRECATED_REASON(
"Y2022: This method returns a temporary. Use 'operator*' instead")
138 Item operator->()
const {
return _itemInternal(); }
142 ItemSharedInfo* m_shared_info;
143 const Int32* m_local_id_ptr;
144 Int32 m_local_id_offset = 0;
148 inline ItemInternal* _itemInternal()
const
150 return m_shared_info->m_items_internal[m_local_id_offset + (*m_local_id_ptr)];
157template<
typename ItemType>
167 Int32 local_id_offset)
181 typedef ItemType value_type;
192 ItemType operator*()
const {
return ItemType(m_local_id_offset + (*m_local_id_ptr), m_shared_info); }
194 ThatClass& operator++() { ++m_local_id_ptr;
return (*
this); }
195 ThatClass& operator--() { --m_local_id_ptr;
return (*
this); }
198 return this->m_local_id_ptr -
b.m_local_id_ptr;
202 const Int32*
ptr = a.m_local_id_ptr - v;
203 return ThatClass(a.m_shared_info,
ptr, a.m_local_id_offset);
207 const Int32*
ptr = a.m_local_id_ptr + v;
208 return ThatClass(a.m_shared_info,
ptr, a.m_local_id_offset);
213 ARCANE_DEPRECATED_REASON(
"Y2022: This method returns a temporary. Use 'operator*' instead")
214 ItemType operator->()
const {
return this->_itemInternal(); }
238 using difference_type = std::ptrdiff_t;
247 ARCANE_DEPRECATED_REASON(
"Y2022: Use constructor with ItemInfoListView instead")
254 ARCANE_DEPRECATED_REASON(
"Y2022: Use constructor with ItemInfoListView instead")
256 : m_index_view(indexes)
266 : m_index_view(view.
localIds(),view.m_local_id_offset,0)
267 , m_shared_info(view.m_shared_info)
275 : m_index_view(indexes)
281 : m_index_view(view.constLocalIds(),view.m_local_id_offset,0)
282 , m_shared_info(view.m_shared_info)
287 : m_index_view(v.m_index_view)
288 , m_shared_info(v.m_shared_info)
299 : m_index_view(
local_ids,local_id_offset,0)
314 : m_index_view(indexes)
331 Int32
size()
const {
return m_index_view.size(); }
334 ARCANE_DEPRECATED_REASON(
"Y2022: Do not use this method")
355 const_iterator begin()
const
357 return const_iterator(m_shared_info, m_index_view._data(), _localIdOffset());
359 SentinelType end()
const
361 return endIterator();
363 const_iterator endIterator()
const
365 return const_iterator(m_shared_info, (m_index_view._data() + this->size()), _localIdOffset());
381 const Int32* _localIdsData()
const {
return m_index_view._data(); }
382 Int32 _localIdOffset()
const {
return m_index_view._localIdOffset(); }
386 void _init(ItemInternalArrayView items)
388 m_shared_info = (size() > 0 && !items.empty()) ? ItemInternalCompatibility::_getSharedInfo(items[0]) : ItemSharedInfo::nullInstance();
390 void _init2(IItemFamily* family);
395 void _internalSwigSet(ItemVectorViewPOD* vpod);
403template<
typename ItemType>
413 using difference_type = std::ptrdiff_t;
414 using value_type = ItemType;
416 using reference_type = ItemType&;
418 using const_reference_type =
const ItemType&;
424 ARCANE_DEPRECATED_REASON(
"Y2022: Use constructor with ItemInfoListView instead")
428 ARCANE_DEPRECATED_REASON(
"Y2022: Use constructor with ItemInfoListView instead")
462 ItemType operator[](Integer index)
const
464 return ItemType(m_index_view[index],m_shared_info);
475 return const_iterator(m_shared_info, _localIdsData(), _localIdOffset());
479 return const_iterator(m_shared_info, _localIdsData() + this->
size(), _localIdOffset());
483 return const_iterator(m_shared_info, _localIdsData() + this->
size(), _localIdOffset());
Interface d'une famille d'entités.
Itérateur pour la classe ItemConnectedListView.
Vue sur une liste d'entités connectées à une autre.
Vue sur une liste d'entités connectées à une autre entité.
Vue sur un tableau d'index (localIds()) d'entités.
Vue sur une liste pour obtenir des informations sur les entités.
Vue interne sur un tableau d'entités.
Int32ConstArrayView localIds() const
Tableau des numéros locaux des entités.
Structure interne partagée d'une entité de maillage.
Itérateur pour la classe ItemVectorView.
friend bool operator==(const ThatClass &lhs, const ThatClass &rhs)
Compare les indices d'itération de deux instances.
Integer size_type
Type indexant le tableau.
std::ptrdiff_t difference_type
Type d'une distance entre itérateur éléments du tableau.
Item value_type
Type indexant le tableau.
Vue sur un tableau typé d'entités.
Vue sur un vecteur d'entités.
ItemVectorView subView(Integer abegin, Integer asize) const
Sous-vue à partir de l'élément abegin et contenant asize éléments.
Int32 size() const
Nombre d'éléments du vecteur.
ItemIndexArrayView indexes() const
Vue sur le tableau des indices.
Int32ConstArrayView localIds() const
Tableau des numéros locaux des entités.
Item operator[](Integer index) const
Accède au i-ème élément du vecteur.
Classe de base d'un élément de maillage.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Vue interne sur un tableau d'entités.
Vue sur le conteneur d'une liste de ItemLocalId.
Vue constante d'un tableau de type T.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-