12#ifndef ARCANE_MESH_ITEMDATA_H
13#define ARCANE_MESH_ITEMDATA_H
21#include "arcane/mesh/MeshGlobal.h"
23#include "arcane/utils/Array.h"
24#include "arcane/utils/FatalErrorException.h"
26#include "arcane/core/IItemFamily.h"
27#include "arcane/core/IItemFamilyModifier.h"
28#include "arcane/core/ISerializer.h"
29#include "arcane/core/IMesh.h"
30#include "arcane/core/ISubDomain.h"
31#include "arcane/core/IParallelMng.h"
66 , m_item_family(nullptr)
67 , m_item_family_modifier(nullptr)
80 : m_nb_items(nb_items)
81 , m_item_infos(info_size)
82 , m_item_lids(item_lids)
83 , m_item_family(item_family)
84 , m_item_family_modifier(item_family_modifier)
85 , m_subdomain_id(subdomain_id)
95 : m_nb_items(nb_items)
96 , m_item_infos(info_size)
97 , _internal_item_lids(nb_items)
98 , m_item_lids(_internal_item_lids)
99 , m_item_family(item_family)
100 , m_item_family_modifier(item_family_modifier)
101 , m_subdomain_id(subdomain_id)
111 Integer nbItems()
const {
return m_nb_items; }
112 Int64Array& itemInfos() {
return m_item_infos; }
113 Int64ConstArrayView itemInfos()
const {
return m_item_infos; }
117 IItemFamily* itemFamily() {
return m_item_family; }
118 IItemFamily
const* itemFamily()
const {
return m_item_family; }
119 IItemFamilyModifier* itemFamilyModifier() {
return m_item_family_modifier; }
120 Integer subDomainId()
const {
return m_subdomain_id; }
122 void serialize(ISerializer* buffer);
123 void deserialize(ISerializer* buffer, IMesh* mesh);
124 void deserialize(ISerializer* buffer, IMesh* mesh, Int32Array& item_lids);
129 void _deserialize(ISerializer* buffer, IMesh* mesh);
130 void _ownerDefaultInit()
132 m_item_owners.resize(m_nb_items);
133 m_item_owners.fill(m_subdomain_id);
142 IItemFamily* m_item_family;
143 IItemFamilyModifier* m_item_family_modifier;
172 auto inserter = m_item_infos_list.insert(std::make_pair(family_id,
ItemData()));
173 ARCANE_ASSERT((inserter.second), (String::format(
"Cannot insert twice ItemData for family with id {0} in ItemInfosList", family_id).localstr()));
174 return inserter.first->second;
177 ItemData& itemData(
const Integer family_id,
185 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)));
186 ARCANE_ASSERT((inserter.second), (String::format(
"Cannot insert twice ItemData for family with id {0} in ItemInfosList", family_id).localstr()));
187 return inserter.first->second;
190 ItemData& operator[](
const Integer family_id)
192 return m_item_infos_list[family_id];
195 const ItemData& operator[](
const Integer family_id)
const
198 return m_item_infos_list.at(family_id);
200 catch (
const std::out_of_range&) {
201 ARCANE_FATAL(
"Cannot return family with id {0}, not inserted in current ItemDataList", family_id);
207 bool contains(
const Integer family_id)
209 return m_item_infos_list.find(family_id) != m_item_infos_list.end();
212 void clear(
const Integer family_id)
214 m_item_infos_list.erase(family_id);
219 std::map<Integer, ItemData> m_item_infos_list;
Arcane configuration file.
#define ARCANE_FATAL(...)
Macro throwing a FatalErrorException.
Declarations of Arcane's general types.
Interface for modifying a family.
Interface of an entity family.
ItemDataList()
Collection of data structures necessary for generic item addition (ItemData).
ItemData(Integer nb_items, Integer info_size, Int32ArrayView item_lids, IItemFamily *item_family, IItemFamilyModifier *item_family_modifier, Int32 subdomain_id)
ItemData(const ItemData &rhs)=default
Copy constructor.
ItemData(Integer nb_items, Integer info_size, IItemFamily *item_family, IItemFamilyModifier *item_family_modifier, Int32 subdomain_id)
ItemData()
Data structure necessary for generic item addition.
SharedArray< Int64 > Int64SharedArray
Dynamic 1D array of 64-bit integers.
Array< Int64 > Int64Array
Dynamic one-dimensional array of 64-bit integers.
Integer arcaneCheckArraySize(unsigned long long size)
Checks that size can be converted into an 'Integer' to serve as the size of an array....
Int32 Integer
Type representing an integer.
ConstArrayView< Int32 > Int32ConstArrayView
C equivalent of a 1D array of 32-bit integers.
UniqueArray< Int32 > Int32UniqueArray
Dynamic 1D array of 32-bit integers.
ArrayView< Int32 > Int32ArrayView
C equivalent of a 1D array of 32-bit integers.
std::int32_t Int32
Signed integer type of 32 bits.