Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
ItemFamilySerializer.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* ItemFamilySerializer.h (C) 2000-2018 */
9/* */
10/* Unique Serializer valid for any item family. */
11/* Requires the use of the family graph: ItemFamilyNetwork */
12/*---------------------------------------------------------------------------*/
13
14#ifndef ARCANE_SRC_ARCANE_MESH_ITEMFAMILYSERIALIZER_H_
15#define ARCANE_SRC_ARCANE_MESH_ITEMFAMILYSERIALIZER_H_
16
17/*---------------------------------------------------------------------------*/
18/*---------------------------------------------------------------------------*/
19
20#include "arcane/mesh/MeshGlobal.h"
21
22#include "arcane/core/IItemFamilySerializer.h"
23#include "arcane/core/IItemFamilyModifier.h"
24
25#include "arcane/mesh/ItemData.h"
26#include "arcane/mesh/DynamicMeshIncrementalBuilder.h" // Todo replace this by IMeshModifier
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31namespace Arcane::mesh
32{
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
36
45class ARCANE_MESH_EXPORT ItemFamilySerializer : public IItemFamilySerializer
46{
47 public:
48
49 ItemFamilySerializer(IItemFamily* family, IItemFamilyModifier* family_modifier, DynamicMeshIncrementalBuilder* mesh_builder)
50 : m_family(family)
51 , m_family_modifier(family_modifier)
52 , m_mesh_builder(mesh_builder)
53 {
54 if (!family->mesh()->itemFamilyNetwork())
55 throw FatalErrorException("Cannot create ItemFamilySerializer if IItemFamilyNetwork is not defined. Exiting.");
56 }
57 ~ItemFamilySerializer() {}
58
59 public:
60
61 void serializeItems(ISerializer* buf, Int32ConstArrayView local_ids) override;
62 void deserializeItems(ISerializer* buf, Int32Array* local_ids) override;
63
64 void serializeItemRelations(ISerializer* buf, Int32ConstArrayView cells_local_id) override;
65 void deserializeItemRelations(ISerializer* buf, Int32Array* cells_local_id) override;
66
67 IItemFamily* family() const override;
68
69 private:
70
71 IItemFamily* m_family;
72 IItemFamilyModifier* m_family_modifier;
73 DynamicMeshIncrementalBuilder* m_mesh_builder;
74
75 private:
76
77 void _fillItemDependenciesData(ItemData& item_data, Int32ConstArrayView local_ids);
78 void _fillItemRelationsData(ItemData& item_data, Int32ConstArrayView local_ids);
79
80 void _deserializeItemsOrRelations(ISerializer* buf, Int32Array* local_ids);
81};
82
83/*---------------------------------------------------------------------------*/
84/*---------------------------------------------------------------------------*/
85
86} // namespace Arcane::mesh
87
88/*---------------------------------------------------------------------------*/
89/*---------------------------------------------------------------------------*/
90
91#endif
Interface for modifying a family.
Manages the serialization/deserialization of entities in a family.
Interface of an entity family.
Definition IItemFamily.h:83
void serializeItemRelations(ISerializer *buf, Int32ConstArrayView cells_local_id) override
Serializes the relations of the entities of the family family() into buf.
void deserializeItems(ISerializer *buf, Int32Array *local_ids) override
Deserializes the entities of the family family() from buf.
IItemFamily * family() const override
Associated family.
void deserializeItemRelations(ISerializer *buf, Int32Array *cells_local_id) override
Deserializes the relations of the entities of the family family() from buf.
void serializeItems(ISerializer *buf, Int32ConstArrayView local_ids) override
Serializes the entities of the family family() into buf.
ConstArrayView< Int32 > Int32ConstArrayView
C equivalent of a 1D array of 32-bit integers.
Definition UtilsTypes.h:482
Array< Int32 > Int32Array
Dynamic one-dimensional array of 32-bit integers.
Definition UtilsTypes.h:127