12#ifndef ARCANE_ITEMDATA_H_
13#define ARCANE_ITEMDATA_H_
21#include "arcane/mesh/MeshGlobal.h"
22#include "arcane/ArcaneTypes.h"
23#include "arcane/utils/Array.h"
24#include "arcane/utils/FatalErrorException.h"
26#include "arcane/IItemFamily.h"
27#include "arcane/IItemFamilyModifier.h"
28#include "arcane/ISerializer.h"
29#include "arcane/IMesh.h"
30#include "arcane/ISubDomain.h"
31#include "arcane/IParallelMng.h"
37ARCANE_MESH_BEGIN_NAMESPACE
75 : m_nb_items(nb_items)
87 : m_nb_items(nb_items)
89 , _internal_item_lids(nb_items)
90 , m_item_lids(_internal_item_lids)
100 Integer nbItems()
const {
return m_nb_items;}
101 Int64Array& itemInfos() {
return m_item_infos;}
104 Int32ArrayView itemOwners() {
if (m_item_owners.empty()) _ownerDefaultInit();
return m_item_owners;}
105 IItemFamily* itemFamily() {
return m_item_family;}
106 IItemFamily
const* itemFamily()
const {
return m_item_family;}
107 IItemFamilyModifier* itemFamilyModifier() {
return m_item_family_modifier;}
108 Integer subDomainId()
const {
return m_subdomain_id;}
110 void serialize(ISerializer* buffer);
111 void deserialize(ISerializer* buffer, IMesh* mesh);
112 void deserialize(ISerializer* buffer, IMesh* mesh, Int32Array& item_lids);
117 void _deserialize(ISerializer* buffer, IMesh* mesh);
118 void _ownerDefaultInit() { m_item_owners.resize(m_nb_items); m_item_owners.fill(m_subdomain_id);}
126 IItemFamily* m_item_family;
127 IItemFamilyModifier* m_item_family_modifier;
158 ARCANE_ASSERT((
inserter.second),(String::format(
"Cannot insert twice ItemData for family with id {0} in ItemInfosList",
family_id).localstr()));
162 ItemData& itemData(
const Integer family_id,
165 Int32ArrayView item_lids,
166 IItemFamily* item_family,
167 IItemFamilyModifier* family_modifier,
168 const Integer& subdomain_id)
170 auto inserter = m_item_infos_list.insert(std::make_pair(family_id,ItemData(nb_items,info_size,item_lids,item_family,family_modifier,subdomain_id)));
171 ARCANE_ASSERT((inserter.second),(String::format(
"Cannot insert twice ItemData for family with id {0} in ItemInfosList",family_id).localstr()));
172 return inserter.first->second;
175 ItemData& operator[] (
const Integer family_id){
176 return m_item_infos_list[family_id];
179 const ItemData& operator[] (
const Integer family_id)
const {
181 return m_item_infos_list.at(family_id);
182 }
catch (
const std::out_of_range&) {
183 ARCANE_FATAL(
"Cannot return family with id {0}, not inserted in current ItemDataList",family_id);
189 bool contains(
const Integer family_id) {
190 return m_item_infos_list.find(family_id) != m_item_infos_list.end();
193 void clear(
const Integer family_id) {
194 m_item_infos_list.erase(family_id);
198 std::map<Integer, ItemData> m_item_infos_list;
204ARCANE_MESH_END_NAMESPACE
Fichier de configuration d'Arcane.
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Interface de modification d'une famille.
Interface d'une famille d'entités.
ItemDataList()
Collection de structure de données nécessaire à l'ajout générique d'item (ItemData).
ItemData(const ItemData &rhs)=default
Constructeur de recopie.
ItemData(Integer nb_items, Integer info_size, Int32ArrayView item_lids, IItemFamily *item_family, IItemFamilyModifier *item_family_modifier, Int32 subdomain_id)
ItemData(Integer nb_items, Integer info_size, IItemFamily *item_family, IItemFamilyModifier *item_family_modifier, Int32 subdomain_id)
ItemData()
Structure de données nécessaire à l'ajout générique d'item.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Vue modifiable d'un tableau d'un type T.
SharedArray< Int64 > Int64SharedArray
Tableau dynamique à une dimension d'entiers 64 bits.
Integer arcaneCheckArraySize(unsigned long long size)
Vérifie que size peut être converti dans un 'Integer' pour servir de taille à un tableau....
UniqueArray< Int32 > Int32UniqueArray
Tableau dynamique à une dimension d'entiers 32 bits.
ConstArrayView< Int64 > Int64ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 64 bits.
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Int32 Integer
Type représentant un entier.