14#include "arcane/utils/ITraceMng.h"
15#include "arcane/utils/CheckedConvert.h"
17#include "arcane/core/IParallelMng.h"
18#include "arcane/core/MeshPartInfo.h"
20#include "arcane/mesh/ItemData.h"
32serialize(ISerializer* buffer)
34 switch (buffer->mode()) {
35 case ISerializer::ModeReserve: {
36 buffer->reserve(m_item_family->name());
37 buffer->reserve(
itemKindName(m_item_family->itemKind()));
38 buffer->reserveInt64(2);
43 buffer->put(m_item_family->name());
45 buffer->putInt64(m_nb_items);
46 buffer->putInt64(m_item_infos.size());
47 buffer->putSpan(m_item_owners);
48 buffer->putSpan(m_item_infos);
51 deserialize(buffer, m_item_family->mesh());
60deserialize(ISerializer* buffer, IMesh* mesh)
62 _deserialize(buffer, mesh);
64 _internal_item_lids.resize(m_nb_items);
65 m_item_lids = _internal_item_lids;
72deserialize(ISerializer* buffer, IMesh* mesh,
Int32Array& item_lids)
74 _deserialize(buffer, mesh);
75 item_lids.resize(m_nb_items);
76 m_item_lids = item_lids;
83_deserialize(ISerializer* buffer, IMesh* mesh)
86 (
"Impossible to deserialize a buffer not in ModeGet. In ItemData::deserialize.Exiting"))
88 buffer->get(family_name);
89 String item_kind_name;
90 buffer->get(item_kind_name);
91 std::istringstream iss(item_kind_name.localstr());
94 m_item_family = mesh->findItemFamily(family_kind, family_name, false);
95 m_item_family_modifier = mesh->findItemFamilyModifier(family_kind, family_name);
96 m_nb_items = CheckedConvert::toInt32(buffer->getInt64());
97 m_item_owners.resize(m_nb_items);
98 m_item_infos.resize(buffer->getInt64());
99 buffer->getSpan(m_item_owners);
100 buffer->getSpan(m_item_infos);
101 m_subdomain_id = mesh->meshPartInfo().partRank();
112 m_item_infos.clear();
113 _internal_item_lids.clear();
115 m_item_owners.clear();
116 m_item_family =
nullptr;
117 m_item_family_modifier =
nullptr;
@ ModePut
The serializer expects reserve().
@ ModeGet
The serializer expects get().
ItemData()
Data structure necessary for generic item addition.
@ Int32
32-bit integer data type
@ Int64
64-bit integer data type
ArrayView< Int32 > Int32ArrayView
C equivalent of a 1D array of 32-bit integers.
eItemKind
Mesh entity type.
const char * itemKindName(eItemKind kind)
Entity kind name.
Array< Int32 > Int32Array
Dynamic one-dimensional array of 32-bit integers.