19#include "arcane/IItemFamily.h"
20#include "arcane/IParallelMng.h"
21#include "arcane/IMesh.h"
22#include "arcane/ItemEnumerator.h"
23#include "arcane/ConnectivityItemVector.h"
25#include "arcane/mesh/ItemFamilySerializer.h"
26#include "arcane/mesh/ItemFamilyNetwork.h"
33ARCANE_MESH_BEGIN_NAMESPACE
38void ItemFamilySerializer::
41 m_family->traceMng()->debug(
Trace::High) <<
"_serializeItems : "
42 << m_family->mesh()->name() <<
" "
43 << m_family->name() <<
" "
44 << m_family->parentFamilyDepth();
48 ItemData item_dependencies_data(local_ids.
size(),0,created_item_lids, m_family, m_family_modifier, m_family->parallelMng()->commRank());
49 _fillItemDependenciesData(item_dependencies_data,local_ids);
50 item_dependencies_data.serialize(buf);
56void ItemFamilySerializer::
59 _deserializeItemsOrRelations(buf, local_ids);
65void ItemFamilySerializer::
71 item_data.deserialize(buf, m_family->mesh(), *local_ids);
74 item_data.deserialize(buf, m_family->mesh());
78 m_mesh_builder->addFamilyItems(item_data);
84void ItemFamilySerializer::
87 m_family->traceMng()->debug(
Trace::High) <<
"_serializeItems relations : "
88 << m_family->mesh()->name() <<
" "
89 << m_family->name() <<
" "
90 << m_family->parentFamilyDepth();
94 ItemData item_relations_data(local_ids.
size(),0,created_item_lids, m_family, m_family_modifier, m_family->parallelMng()->commRank());
95 _fillItemRelationsData(item_relations_data,local_ids);
96 item_relations_data.serialize(buf);
102void ItemFamilySerializer::
105 _deserializeItemsOrRelations(buf, local_ids);
111void ItemFamilySerializer::
114 Int64Array& item_infos = item_data.itemInfos();
118 item_infos.
reserve(1+nb_item*32);
122 item_infos.
add(out_connectivities.size());
125 item_infos.
add(item->type());
126 item_infos.
add(item->uniqueId().asInt64());
127 item_owners[item.index()] = item->owner();
128 for (
auto out_connectivity : out_connectivities)
132 item_infos.
add(out_connectivity->targetFamily()->itemKind());
133 item_infos.
add(out_connectivity->nbConnectedItem(
ItemLocalId(item)));
136 item_infos.
add(connected_item->uniqueId().asInt64());
143void ItemFamilySerializer::
144_fillItemRelationsData(ItemData& item_data, Int32ConstArrayView local_ids)
147 Int64Array& item_infos = item_data.itemInfos();
150 const Integer nb_item = local_ids.size();
151 item_infos.reserve(1+nb_item*32);
153 IItemFamilyNetwork* family_network = m_family->mesh()->itemFamilyNetwork();
155 item_infos.add(out_connectivities.size());
157 item_infos.add(item->type());
158 item_infos.add(item->uniqueId().asInt64());
159 item_owners[item.index()] = item->owner();
160 for (
auto out_connectivity : out_connectivities)
162 item_infos.add(out_connectivity->targetFamily()->itemKind());
163 item_infos.add(out_connectivity->nbConnectedItem(ItemLocalId(item)));
164 ConnectivityItemVector connectivity_accessor(out_connectivity);
165 ENUMERATE_ITEM(connected_item, connectivity_accessor.connectedItems(ItemLocalId(item)))
167 item_infos.add(connected_item->uniqueId().asInt64());
185ARCANE_MESH_END_NAMESPACE
void reserve(Int64 new_capacity)
Réserve le mémoire pour new_capacity éléments.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
Gère la récupération des informations de connectivité.
constexpr Integer size() const noexcept
Nombre d'éléments du tableau.
virtual SharedArray< IIncrementalItemConnectivity * > getChildDependencies(IItemFamily *source_family)=0
Obtenir la liste de toutes les dépendances, filles d'une famille source_family ou parentes d'une fami...
virtual SharedArray< IIncrementalItemConnectivity * > getChildRelations(IItemFamily *source_family)=0
Obtenir la liste de toutes les relations, filles d'une famille source_family ou parentes d'une famill...
Interface d'une famille d'entités.
Interface d'un sérialiseur.
Index d'un Item dans une variable.
Array< Int64 > Int64Array
Tableau dynamique à une dimension d'entiers 64 bits.
Int32 Integer
Type représentant un entier.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
UniqueArray< Int32 > Int32UniqueArray
Tableau dynamique à une dimension d'entiers 32 bits.
ArrayView< Int32 > Int32ArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Array< Int32 > Int32Array
Tableau dynamique à une dimension d'entiers 32 bits.