12#ifndef ARCANE_MESH_DYNAMICMESHKINDINFOS_H
13#define ARCANE_MESH_DYNAMICMESHKINDINFOS_H
17#include "arcane/utils/Array.h"
18#include "arcane/utils/String.h"
19#include "arcane/utils/HashTableMap.h"
20#include "arcane/utils/TraceAccessor.h"
22#include "arcane/core/ItemGroup.h"
23#include "arcane/core/ItemInternal.h"
26#include "arcane/mesh/ItemInternalMap.h"
33class ItemFamilyCompactInfos;
78 void finalizeMeshChanged();
88 void prepareForDump();
104 ItemInternal* itemInternal(Int32 local_id)
const {
return m_internals[local_id]; }
111 if (m_has_unique_id_map)
121 if (m_has_unique_id_map)
131 _checkActiveItem(item);
133 _setSuppressed(item);
134 if (m_has_unique_id_map){
135 Int64 uid = item->
uniqueId().asInt64();
136 if (uid != NULL_ITEM_UNIQUE_ID)
137 m_items_map.remove(uid);
139 m_free_internals.add(item->
localId());
140 m_removed_items.add(item->
localId());
148 _checkActiveItem(item);
150 _setSuppressed(item);
151#ifndef REMOVE_UID_ON_DETACH
152 if (m_has_unique_id_map)
153 m_items_map.remove(item->
uniqueId().asInt64());
155 m_free_internals.add(item->
localId());
156 m_removed_items.add(item->
localId());
169 _checkActiveItem(item);
173#ifdef REMOVE_UID_ON_DETACH
174 if (m_has_unique_id_map)
175 m_items_map.remove(item->
uniqueId().asInt64());
187 if (!m_has_unique_id_map)
202 if (!m_has_unique_id_map)
205 return m_items_map._tryFindItemInternal(uid);
213 Integer nbItem()
const {
return m_nb_item; }
215 eItemKind kind()
const {
return m_kind; }
219 return !m_added_items.empty() || !m_removed_items.empty();
222 void beginCompactItems(ItemFamilyCompactInfos& compact_infos);
243 void finishCompactItems(ItemFamilyCompactInfos& compact_infos);
245 void itemsUniqueIdToLocalId(ArrayView<Int64> ids,
bool do_fatal)
const;
246 void itemsUniqueIdToLocalId(Int32ArrayView local_ids,
247 Int64ConstArrayView unique_ids,
248 bool do_fatal)
const;
249 void itemsUniqueIdToLocalId(Int32ArrayView local_ids,
250 ConstArrayView<ItemUniqueId> unique_ids,
251 bool do_fatal)
const;
253 ItemFamily* itemFamily()
const
255 return m_item_family;
258 void setItemFamily(ItemFamily* item_family);
260 bool hasUniqueIdMap()
const
262 return m_has_unique_id_map;
265 void setHasUniqueIdMap(
bool v);
267 void printFreeInternals(Integer max_print);
276 Integer
nb_free = m_free_internals.size();
279 new_item = m_internals[m_free_internals.back()];
280 m_free_internals.popBack();
286 Integer
nb_free2 = m_free_internals_in_multi_buffer.size();
288 new_item = m_free_internals_in_multi_buffer.back();
289 m_free_internals_in_multi_buffer.popBack();
292 new_item = m_item_internals_buffer->allocOne();
293 lid = m_internals.size();
296 _updateItemSharedInfoInternalView();
299 m_added_items.add(
lid);
317 bool m_use_new_finalize;
318 bool m_is_first_finalize;
319 bool m_has_unique_id_map;
344 int f = item->
flags();
346 f |= ItemFlags::II_Suppressed;
352 int f = item->
flags();
353 f |= ItemFlags::II_Added;
360 void _badSameUniqueId(Int64
unique_id)
const;
361 void _badUniqueIdMap()
const;
362 void _updateItemSharedInfoInternalView();
ItemUniqueId uniqueId() const
Numéro unique de l'entité
Int32 flags() const
Flags de l'entité
Int32 localId() const
Numéro local (au sous-domaine) de l'entité
Informations pour gérer le compactage des entités d'une famille.
Flags pour les caractéristiques des entités.
Groupe d'entités de maillage.
Structure interne d'une entité de maillage.
Structure interne partagée d'une entité de maillage.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
void setDetached(bool v)
Positionne l'état détachée de l'entité
void setFlags(Int32 f)
Positionne les flags de l'entité
Infos de maillage pour un genre donné d'entité.
Integer m_nb_item
Groupe de toutes les entités.
String m_kind_name
Nom du genre des entités (Node, Cell, ...)
Integer maxUsedLocalId() const
Numéro local le plus grand utilisé.
MultiBufferT< ItemInternal > * m_item_internals_buffer
Tampon pour stocker une instance de ItemInternal.
ItemGroup allItems() const
Groupe de toutes les entités.
void removeOne(ItemInternal *item)
Supprime l'entité item.
ItemInternal * allocOne(Int64 unique_id, bool &need_alloc)
Ajoute une entité de numéro unique unique_id.
UniqueArray< ItemInternal * > m_internals
ItemInternal des entités.
ItemInternal * findOrAllocOne(Int64 uid, bool &is_alloc)
Recherche l'entité de numéro unique unique_id et la créé si elle n'existe pas.
ConstArrayView< ItemInternal * > itemsInternal() const
Liste interne des ItemInternal's.
ItemInternal * _allocOne(bool &need_alloc)
Ajoute une entité.
Int32ConstArrayView addedItems() const
Liste des entitées ajoutées ou retirées depuis le dernier endUpdate()
ItemInternal * allocOne(Int64 unique_id)
Ajoute une entité de numéro unique unique_id.
void removeDetachedOne(ItemInternal *item)
Supprime l'entité détachée item.
ItemFamilyCompactInfos * m_compact_infos
Temporaire tant que oldToNewLocalIds() et newToOldLocalIds() existent.
String m_all_group_name
Nom du groupe contenant toutes les entités.
void detachOne(ItemInternal *item)
Détache une l'entité item.
ItemInternalMap m_items_map
Table de hachage conversion uniqueId() -> ItemInternal*.
Int32UniqueArray m_free_internals
Liste des ItemInternal de m_item_internals_buffer libres.
ItemInternal * findOne(Int64 uid)
Recherche l'entité de numéro unique uid.
IMesh * m_mesh
Maillage associé
eItemKind m_kind
Genre correspondant.
ItemFamily * m_item_family
Famille de maillage associée.
Tableau associatif de ItemInternal.
Vue constante d'un tableau de type T.
Chaîne de caractères unicode.
Classe d'accès aux traces.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- 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.
eItemKind
Genre d'entité de maillage.