12#ifndef ARCANE_MESH_INCREMENTALITEMCONNECTIVITY_H
13#define ARCANE_MESH_INCREMENTALITEMCONNECTIVITY_H
19#include "arcane/utils/TraceAccessor.h"
21#include "arcane/core/IItemFamily.h"
22#include "arcane/core/ItemVector.h"
23#include "arcane/core/VariableTypes.h"
24#include "arcane/core/IIncrementalItemConnectivity.h"
26#include "arcane/mesh/MeshGlobal.h"
53class ARCANE_MESH_EXPORT AbstractIncrementalItemConnectivity
62 AbstractIncrementalItemConnectivity(
IItemFamily* source_family,
64 const String& connectivity_name);
82 IItemFamily* _sourceFamily()
const {
return m_source_family;}
83 IItemFamily* _targetFamily()
const {
return m_target_family;}
87 IItemFamily* m_source_family;
88 IItemFamily* m_target_family;
89 SharedArray<IItemFamily*> m_families;
98class ARCANE_MESH_EXPORT IncrementalItemConnectivityBase
99:
public AbstractIncrementalItemConnectivity
105 template <
class SourceFamily,
class TargetFamily,
class LegacyType,
class CustomType>
106 friend class NewWithLegacyConnectivity;
112 ~IncrementalItemConnectivityBase()
override;
117 IncrementalItemConnectivityBase(
const IncrementalItemConnectivityBase&) =
delete;
118 IncrementalItemConnectivityBase(IncrementalItemConnectivityBase&&) =
delete;
119 IncrementalItemConnectivityBase& operator=(
const IncrementalItemConnectivityBase&) =
delete;
120 IncrementalItemConnectivityBase& operator=(IncrementalItemConnectivityBase&&) =
delete;
128 return m_connectivity_nb_item[lid];
132 return m_connectivity_list[ m_connectivity_index[lid] + index ];
139 Int32 maxNbConnectedItem()
const override;
141 void reserveMemoryForNbSourceItems(
Int32 n,
bool pre_alloc_connectivity)
override;
148 Int32 nb = m_connectivity_nb_item[lid];
149 Int32 index = m_connectivity_index[lid];
150 return { nb, &m_connectivity_list[index] };
154 Int32ArrayView _connectedItemsLocalId(ItemLocalId lid)
156 Int32 nb = m_connectivity_nb_item[lid];
157 Int32 index = m_connectivity_index[lid];
158 return { nb, &m_connectivity_list[index] };
163 Int32ArrayView connectivityIndex() {
return m_connectivity_index; }
166 void setItemConnectivityList(ItemInternalConnectivityList* ilist,Int32 index);
179 bool m_is_empty =
true;
185 Integer m_item_connectivity_index = -1;
186 std::unique_ptr<InternalApi> m_internal_api;
190 void _notifyConnectivityListChanged();
191 void _notifyConnectivityIndexChanged();
192 void _notifyConnectivityNbItemChanged();
193 void _notifyConnectivityNbItemChangedFromObservable();
194 void _computeMaxNbConnectedItem();
195 void _setNewMaxNbConnectedItems(
Int32 new_max);
196 void _setMaxNbConnectedItemsInConnectivityList();
200 void _shrinkMemory();
209class ARCANE_MESH_EXPORT IncrementalItemConnectivity
210:
public IncrementalItemConnectivityBase
221 ~IncrementalItemConnectivity()
override;
243 void setPreAllocatedSize(
Integer value)
final;
245 void dumpStats(std::ostream& out)
const override;
247 void compactConnectivityList();
252 Int64 m_nb_remove = 0;
253 Int64 m_nb_memcopy = 0;
254 Integer m_pre_allocated_size = 0;
259 inline Integer _increaseConnectivityList(
Int32 new_lid);
262 void _checkAddNullItem();
263 void _resetConnectivityList();
279class ARCANE_MESH_EXPORT OneItemIncrementalItemConnectivity
280:
public IncrementalItemConnectivityBase
287 ~OneItemIncrementalItemConnectivity()
override;
305 void dumpStats(std::ostream& out)
const override;
307 void compactConnectivityList();
311 inline void _checkResizeConnectivityList();
#define ARCCORE_DEFINE_REFERENCE_COUNTED_INCLASS_METHODS()
Macro pour définir les méthodes gérant les compteurs de référence.
Gère la récupération des informations de connectivité.
Vue constante d'un tableau de type T.
API interne à Arcane de IIncrementalItemConnectivity.
Interface pour gérer une connectivité incrémentale.
Interface d'une famille d'entités.
Classe de base d'une vue sur une connectivité non structurée.
Vues sur les conteneurs contenant les connectivités. Cette classe permet de rendre opaque en dehors d...
Informations sur l'utilisation mémoire pour les connectivités.
Informations de connectivité, pour une famille d'entité, permettant la transition entre les anciennes...
Index d'un Item dans une variable.
Vue sur un vecteur d'entités.
Référence à une instance.
Implémentation thread-safe d'un compteur de référence.
Chaîne de caractères unicode.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
String name() const final
Nom de la connectivité
ConstArrayView< IItemFamily * > families() const override
Liste des familles (sourceFamily() + targetFamily())
IItemFamily * sourceFamily() const override
Famille source.
IItemFamily * targetFamily() const override
Famille cible.
void notifySourceFamilyLocalIdChanged(Int32ConstArrayView new_to_old_ids) override
Notifie la connectivité que la famille source est compactée.
void _initializeStorage(ConnectivityItemVector *civ) override
Implémente l'initialisation de civ pour cette connectivitée.
Int32 connectedItemLocalId(ItemLocalId lid, Integer index) const final
localId() de la index-ième entitée connectées à l'entité source de numéro local lid
Integer nbConnectedItem(ItemLocalId lid) const final
Nombre d'entité connectées à l'entité source de numéro local lid.
void notifyTargetFamilyLocalIdChanged(Int32ConstArrayView old_to_new_ids) override
Notifie la connectivité que la famille cible est compactée.
bool hasConnectedItem(ItemLocalId source_item, ItemLocalId target_local_id) const override
Test l'existence d'un connectivité entre source_item et l'entité de localId() target_local_id.
void setConnectedItems(ItemLocalId source_item, Int32ConstArrayView target_local_ids) override
Alloue et positionne les entités connectées à source_item.
void removeConnectedItem(ItemLocalId source_item, ItemLocalId target_local_id) override
Supprime l'entité de localId() target_local_id à la connectivité de source_item.
void notifySourceItemAdded(ItemLocalId item) override
Notifie la connectivité qu'une entité a été ajoutée à la famille source.
void addConnectedItem(ItemLocalId source_item, ItemLocalId target_local_id) override
Ajoute l'entité de localId() target_local_id à la connectivité de source_item.
void removeConnectedItems(ItemLocalId source_item) override
Supprime toute les entités connectées à source_item.
void notifyReadFromDump() override
Notifie la connectivité qu'on a effectué une relecture à partir d'une protection.
friend class IndexedIncrementalItemConnectivityMng
Pour accès à _internalNotifySourceItemsAdded().
Integer preAllocatedSize() const final
Nombre d'entités pré-alloués pour la connectivité de chaque entité
void replaceConnectedItems(ItemLocalId source_item, Int32ConstArrayView target_local_ids) override
Remplace les entités de source_item par les entités de localId() target_local_ids.
void replaceConnectedItem(ItemLocalId source_item, Integer index, ItemLocalId target_local_id) override
Remplace l'entité d'index index de source_item par l'entité de localId() target_local_id.
void removeConnectedItem(ItemLocalId source_item, ItemLocalId target_local_id) override
Supprime l'entité de localId() target_local_id à la connectivité de source_item.
void replaceConnectedItems(ItemLocalId source_item, Int32ConstArrayView target_local_ids) override
Remplace les entités de source_item par les entités de localId() target_local_ids.
void addConnectedItem(ItemLocalId source_item, ItemLocalId target_local_id) override
Ajoute l'entité de localId() target_local_id à la connectivité de source_item.
void notifyReadFromDump() override
Notifie la connectivité qu'on a effectué une relecture à partir d'une protection.
bool hasConnectedItem(ItemLocalId source_item, ItemLocalId target_local_id) const override
Test l'existence d'un connectivité entre source_item et l'entité de localId() target_local_id.
void notifySourceFamilyLocalIdChanged(Int32ConstArrayView new_to_old_ids) override
Notifie la connectivité que la famille source est compactée.
void replaceConnectedItem(ItemLocalId source_item, Integer index, ItemLocalId target_local_id) override
Remplace l'entité d'index index de source_item par l'entité de localId() target_local_id.
Integer preAllocatedSize() const final
Nombre d'entités pré-alloués pour la connectivité de chaque entité
void notifySourceItemAdded(ItemLocalId item) override
Notifie la connectivité qu'une entité a été ajoutée à la famille source.
void setPreAllocatedSize(Int32 value) final
Positionne le nombre d'entités à pré-allouer pour la connectivité de chaque entité
void removeConnectedItems(ItemLocalId source_item) override
Supprime toute les entités connectées à source_item.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
std::int32_t Int32
Type entier signé sur 32 bits.