12#ifndef ARCANE_ITEMCONNECTEDLISTVIEW_H
13#define ARCANE_ITEMCONNECTEDLISTVIEW_H
17#include "arcane/ItemInternalVectorView.h"
18#include "arcane/ItemIndexArrayView.h"
19#include "arcane/ItemInfoListView.h"
51 Int32 local_id_offset)
52 : m_shared_info(shared_info)
53 , m_local_id_ptr(local_id_ptr)
54 , m_local_id_offset(local_id_offset)
60 typedef std::random_access_iterator_tag iterator_category;
77 Item operator*()
const
79 return Item(*m_local_id_ptr, m_shared_info);
81 ThatClass& operator++()
86 ThatClass& operator--()
101 return this->m_local_id_ptr - b.m_local_id_ptr;
105 const Int32* ptr = a.m_local_id_ptr - v;
106 return ThatClass(a.m_shared_info, ptr, a.m_local_id_offset);
110 const Int32* ptr = a.m_local_id_ptr + v;
111 return ThatClass(a.m_shared_info, ptr, a.m_local_id_offset);
113 friend bool operator<(
const ThatClass& lhs,
const ThatClass& rhs)
115 return lhs.m_local_id_ptr <= rhs.m_local_id_ptr;
120 return lhs.m_local_id_ptr == rhs.m_local_id_ptr;
122 friend bool operator!=(
const ThatClass& lhs,
const ThatClass& rhs)
124 return !(lhs == rhs);
127 ARCANE_DEPRECATED_REASON(
"Y2022: This method returns a temporary. Use 'operator*' instead")
128 Item operator->()
const
130 return _itemInternal();
135 ItemSharedInfo* m_shared_info;
136 const Int32* m_local_id_ptr;
137 Int32 m_local_id_offset = 0;
141 inline ItemInternal* _itemInternal()
const
143 return m_shared_info->m_items_internal[m_local_id_offset + (*m_local_id_ptr)];
150template <
typename ItemType>
159 Int32 local_id_offset)
166 typedef ItemType value_type;
177 ItemType operator*()
const
179 return ItemType(*m_local_id_ptr, m_shared_info);
193 return this->m_local_id_ptr - b.m_local_id_ptr;
197 const Int32* ptr = a.m_local_id_ptr - v;
202 const Int32* ptr = a.m_local_id_ptr + v;
208 ARCANE_DEPRECATED_REASON(
"Y2022: This method returns a temporary. Use 'operator*' instead")
209 ItemType operator->()
const
211 return this->_itemInternal();
236 using difference_type = std::ptrdiff_t;
250 : m_index_view(view.m_local_ids,view.m_local_id_offset,0)
251 , m_shared_info(view.m_shared_info)
254 : m_index_view(local_ids,local_id_offset,0)
255 , m_shared_info(shared_info)
263 return Item(m_index_view[index], m_shared_info);
272 return const_iterator(m_shared_info, m_index_view._data(), _localIdOffset());
284 return const_iterator(m_shared_info, (m_index_view._data() + this->size()), _localIdOffset());
293 ARCANE_DEPRECATED_REASON(
"Y2023: Use iterator to get values or use operator[]")
296#ifdef ARCANE_HIDE_ITEM_CONNECTIVITY_STRUCTURE
304 operator ItemInternalVectorView()
const
306 return ItemInternalVectorView(m_shared_info, m_index_view._localIds(), _localIdOffset());
310 inline ItemEnumerator enumerator()
const;
315 ItemIndexArrayView indexes()
const
323 return m_index_view._localIds();
328 ItemIndexArrayView m_index_view;
329 ItemSharedInfo* m_shared_info = ItemSharedInfo::nullInstance();
333 const Int32* _localIdsData()
const {
return m_index_view._data(); }
334 Int32 _localIdOffset()
const {
return m_index_view._localIdOffset(); }
342template <
typename ItemType,
int Extent>
360 using BaseClass::m_index_view;
361 using BaseClass::m_shared_info;
366 using difference_type = std::ptrdiff_t;
367 using value_type = ItemType;
369 using SentinelType = const_iterator;
384 :
BaseClass(shared_info, local_ids, local_id_offset)
392 return ItemType(m_index_view[index], m_shared_info);
400 return const_iterator(m_shared_info, this->_localIdsData(), this->_localIdOffset());
403 inline SentinelType
end()
const
410 return const_iterator(m_shared_info, (this->_localIdsData() + this->
size()), this->_localIdOffset());
413#ifdef ARCANE_HIDE_ITEM_CONNECTIVITY_STRUCTURE
Classe de base typeé des énumérateurs sur une liste d'entité connectées.
Classe de base des énumérateurs sur une liste d'entité connectées.
Integer size_type
Type indexant le tableau.
Item value_type
Type indexant le tableau.
std::ptrdiff_t difference_type
Type d'une distance entre itérateur éléments du tableau.
friend bool operator==(const ThatClass &lhs, const ThatClass &rhs)
Compare les indices d'itération de deux instances.
Vue sur une liste d'entités connectées à une autre.
SentinelType end() const
Itérateur sur après la dernière entité connectée.
const_iterator endIterator() const
Itérateur sur après la dernière entité connectée.
ItemType operator[](Integer index) const
index-ème entité connectée
const_iterator begin() const
Itérateur sur la première entité connectée.
Vue sur une liste d'entités connectées à une autre entité.
SentinelType end() const
Itérateur sur après la dernière entité connectée.
const_iterator endIterator() const
Itérateur sur après la dernière entité connectée.
Int32 size() const
Nombre d'éléments du vecteur.
const_iterator begin() const
Itérateur sur la première entité connectée.
Item operator[](Integer index) const
index-ème entité connectée
Int32 size() const
Nombre d'éléments du vecteur.
Vue sur un vecteur d'entités.
Elément de maillage s'appuyant sur des noeuds (Edge,Face,Cell).
Classe de base d'un élément de maillage.
Vue constante d'un tableau de type T.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.