Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ItemVector.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* ItemVector.h (C) 2000-2024 */
9/* */
10/* Vecteur d'entités de même genre. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_ITEMVECTOR_H
13#define ARCANE_CORE_ITEMVECTOR_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18#include "arcane/core/ItemVectorView.h"
19#include "arcane/core/IItemFamily.h"
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
58class ARCANE_CORE_EXPORT ItemVector
59{
60 public:
61
62 using ItemType = Item;
63
64 public:
65
68
71
74
76 ItemVector();
77
78 public:
79
81 operator ItemVectorView() const { return view(); }
82
83 public:
84
90 void setFamily(IItemFamily* afamily);
91
93 void add(Int32 local_id) { m_local_ids.add(local_id); }
94
96 void add(ConstArrayView<Int32> local_ids) { m_local_ids.addRange(local_ids); }
97
99 void addItem(ItemLocalId local_id) { m_local_ids.add(local_id); }
100
102 void addItem(Item item) { m_local_ids.add(item.localId()); }
103
105 Int32 size() const { return m_local_ids.size(); }
106
108 void reserve(Integer capacity) { m_local_ids.reserve(capacity); }
109
111 void clear() { m_local_ids.clear(); }
112
114 ItemVectorView view() const { return ItemVectorView(m_shared_info, m_local_ids, 0); }
115
117 ArrayView<Int32> viewAsArray() { return m_local_ids.view(); }
118
120 ConstArrayView<Int32> viewAsArray() const { return m_local_ids.constView(); }
121
123 void removeAt(Int32 index) { m_local_ids.remove(index); }
124
131 void resize(Integer new_size) { m_local_ids.resize(new_size); }
132
134 ItemVector clone() { return ItemVector(m_family, m_local_ids.constView()); }
135
137 Item operator[](Int32 index) const { return Item(m_local_ids[index], m_shared_info); }
138
140 IItemFamily* family() const { return m_family; }
141
143 ItemEnumerator enumerator() const { return ItemEnumerator(m_shared_info, m_local_ids); }
144
145 protected:
146
147 SharedArray<Int32> m_local_ids;
148 IItemFamily* m_family = nullptr;
149 ItemSharedInfo* m_shared_info = ItemSharedInfo::nullInstance();
150
151 private:
152
153 void _init();
154};
155
156/*---------------------------------------------------------------------------*/
157/*---------------------------------------------------------------------------*/
163template <typename VectorItemType>
165: public ItemVector
166{
167 public:
168
169 using ItemType = VectorItemType;
170
171 public:
172
174 ItemVectorT() = default;
175
180
185
188 : ItemVector(rhs)
189 {}
190
195
196 public:
197
199 operator ItemVectorViewT<VectorItemType>() const { return view(); }
200
201 public:
202
204 ItemType operator[](Int32 index) const
205 {
206 return ItemType(m_local_ids[index], m_shared_info);
207 }
208
210 void addItem(ItemType item) { m_local_ids.add(item.localId()); }
211
213 void addItem(ItemLocalIdT<ItemType> local_id) { m_local_ids.add(local_id); }
214
217 {
218 return ItemVectorViewT<ItemType>(m_shared_info, m_local_ids.constView(), 0);
219 }
220
223 {
224 return ItemEnumeratorT<ItemType>(m_shared_info, m_local_ids);
225 }
226};
227
228/*---------------------------------------------------------------------------*/
229/*---------------------------------------------------------------------------*/
230
231template <typename ItemType> inline ItemVectorViewT<ItemType>::
232ItemVectorViewT(const ItemVectorT<ItemType>& rhs)
233: ItemVectorView(rhs.view())
234{
235}
236
237/*---------------------------------------------------------------------------*/
238/*---------------------------------------------------------------------------*/
239
240} // namespace Arcane
241
242/*---------------------------------------------------------------------------*/
243/*---------------------------------------------------------------------------*/
244
245#endif
Types et macros pour itérer sur les entités du maillage.
Interface d'une famille d'entités.
Enumérateur sur une liste d'entités.
Index d'un Item dans une variable.
Definition ItemLocalId.h:40
Structure interne partagée d'une entité de maillage.
Vecteur typé d'entité.
Definition ItemVector.h:166
ItemEnumeratorT< ItemType > enumerator() const
Enumérateur.
Definition ItemVector.h:222
void addItem(ItemType item)
Ajoute une entité à la fin du vecteur.
Definition ItemVector.h:210
ItemType operator[](Int32 index) const
Entité à la position index du vecteur.
Definition ItemVector.h:204
void addItem(ItemLocalIdT< ItemType > local_id)
Ajoute une entité à la fin du vecteur.
Definition ItemVector.h:213
ItemVectorT()=default
Constructeur vide.
ItemVectorT(IItemFamily *afamily, Integer asize)
Constructeur pour asize élément pour la familly afamily.
Definition ItemVector.h:192
ItemVectorT(IItemFamily *afamily, ConstArrayView< Int32 > local_ids)
Créé un vecteur associé à la famille afamily et contenant les entités local_ids.
Definition ItemVector.h:182
ItemVectorT(IItemFamily *afamily)
Constructeur vide avec famille.
Definition ItemVector.h:177
ItemVectorViewT< ItemType > view() const
Vue sur le tableau entier.
Definition ItemVector.h:216
ItemVectorT(const ItemVector &rhs)
Constructeur par copie.
Definition ItemVector.h:187
Vue sur un vecteur d'entités.
Vecteur d'entités.
Definition ItemVector.h:59
ConstArrayView< Int32 > viewAsArray() const
Vue constante sur les numéros locaux.
Definition ItemVector.h:120
void add(Int32 local_id)
Ajoute une entité de numéro local local_id à la fin du vecteur.
Definition ItemVector.h:93
void removeAt(Int32 index)
Supprime l'entité à l'index index.
Definition ItemVector.h:123
void clear()
Supprime toutes les entités du vecteur.
Definition ItemVector.h:111
ItemVector clone()
Clone ce vecteur.
Definition ItemVector.h:134
IItemFamily * family() const
Famille associée au vecteur.
Definition ItemVector.h:140
ItemVectorView view() const
Vue sur le vecteur.
Definition ItemVector.h:114
void addItem(Item item)
Ajoute une entité à la fin du vecteur.
Definition ItemVector.h:102
void resize(Integer new_size)
Positionne le nombre d'éléments du tableau.
Definition ItemVector.h:131
Int32 size() const
Nombre d'éléments du vecteur.
Definition ItemVector.h:105
ArrayView< Int32 > viewAsArray()
Vue sur les numéros locaux.
Definition ItemVector.h:117
void addItem(ItemLocalId local_id)
Ajoute une entité de numéro local local_id à la fin du vecteur.
Definition ItemVector.h:99
Item operator[](Int32 index) const
Entité à la position index du vecteur.
Definition ItemVector.h:137
ItemEnumerator enumerator() const
Enumérateur.
Definition ItemVector.h:143
void reserve(Integer capacity)
Réserve la mémoire pour capacity entités.
Definition ItemVector.h:108
void add(ConstArrayView< Int32 > local_ids)
Ajoute une liste d'entité de numéros locaux local_ids à la fin du vecteur.
Definition ItemVector.h:96
Classe de base d'un élément de maillage.
Definition Item.h:83
constexpr Int32 localId() const
Identifiant local de l'entité dans le sous-domaine du processeur.
Definition Item.h:210
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
ConstArrayView< T > constView() const
Vue constante sur ce tableau.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
Vue constante d'un tableau de type T.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-