Arcane  v3.16.0.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
67 explicit ItemVector(IItemFamily* afamily);
68
70 ItemVector(IItemFamily* afamily, Int32ConstArrayView local_ids);
71
73 ItemVector(IItemFamily* afamily, Integer asize);
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
177 explicit ItemVectorT(IItemFamily* afamily)
178 : ItemVector(afamily)
179 {}
180
183 : ItemVector(afamily, local_ids)
184 {}
185
188 : ItemVector(rhs)
189 {}
190
193 : ItemVector(afamily, asize)
194 {}
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.
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Interface d'une famille d'entités.
Definition IItemFamily.h:84
Enumérateur sur une liste typée d'entités de type ItemType.
Enumérateur sur une liste d'entités.
Index d'une entité ItemType dans une variable.
Definition ItemLocalId.h:90
Index d'un Item dans une variable.
Definition ItemLocalId.h:41
Structure interne partagée d'une entité de maillage.
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 tableau typé d'entités.
Vue sur un vecteur d'entités.
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
ItemVector(IItemFamily *afamily)
Créé un vecteur vide associé à la famille family.
Definition ItemVector.cc:38
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:219
Vecteur 1D de données avec sémantique par référence.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:569
std::int32_t Int32
Type entier signé sur 32 bits.