Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ItemFamilySerializer.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 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/IItemFamilySerializer.h"
23#include "arcane/IItemFamilyModifier.h"
24
25#include "arcane/mesh/ItemData.h"
26#include "arcane/mesh/DynamicMeshIncrementalBuilder.h" // Todo replace this by IMeshModifier
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31ARCANE_BEGIN_NAMESPACE
32
33ARCANE_MESH_BEGIN_NAMESPACE
34
35
36/*---------------------------------------------------------------------------*/
37/*---------------------------------------------------------------------------*/
38
47class ARCANE_MESH_EXPORT ItemFamilySerializer : public IItemFamilySerializer
48{
49public:
50 ItemFamilySerializer(IItemFamily* family, IItemFamilyModifier* family_modifier, DynamicMeshIncrementalBuilder* mesh_builder)
51 : m_family(family)
52 , m_family_modifier(family_modifier)
53 , m_mesh_builder(mesh_builder) {
54 if (!family->mesh()->itemFamilyNetwork()) throw FatalErrorException("Cannot create ItemFamilySerializer if IItemFamilyNetwork is not defined. Exiting.");
55 }
56 ~ItemFamilySerializer(){}
57
58public:
59 void serializeItems(ISerializer* buf,Int32ConstArrayView local_ids) override;
60 void deserializeItems(ISerializer* buf,Int32Array* local_ids) override;
61
62 void serializeItemRelations(ISerializer* buf,Int32ConstArrayView cells_local_id) override;
63 void deserializeItemRelations(ISerializer* buf,Int32Array* cells_local_id) override;
64
65 IItemFamily* family() const override;
66
67private:
68 IItemFamily* m_family;
69 IItemFamilyModifier* m_family_modifier;
70 DynamicMeshIncrementalBuilder* m_mesh_builder;
71
72private:
73 void _fillItemDependenciesData(ItemData& item_data, Int32ConstArrayView local_ids);
74 void _fillItemRelationsData(ItemData& item_data, Int32ConstArrayView local_ids);
75
76 void _deserializeItemsOrRelations(ISerializer *buf, Int32Array *local_ids);
77};
78
79
80
81/*---------------------------------------------------------------------------*/
82/*---------------------------------------------------------------------------*/
83
84ARCANE_MESH_END_NAMESPACE
85
86ARCANE_END_NAMESPACE
87
88
89/*---------------------------------------------------------------------------*/
90/*---------------------------------------------------------------------------*/
91
92#endif /* ARCANE_SRC_ARCANE_MESH_ITEMFAMILYSERIALIZER_H_ */
Exception lorsqu'une erreur fatale est survenue.
Interface de modification d'une famille.
Gère la sérialisation/désérialisation des entités d'une famille.
virtual void serializeItemRelations(ISerializer *buf, Int32ConstArrayView items)=0
Sérialise dans buf les relations des entités de la famille family().
virtual void deserializeItems(ISerializer *buf, Int32Array *items_lid)=0
Désérialise depuis buf les entités de la famille family().
virtual IItemFamily * family() const =0
Famille associée.
virtual void deserializeItemRelations(ISerializer *buf, Int32Array *items_lid)=0
Désérialise les relations depuis buf les entités de la famille family().
virtual void serializeItems(ISerializer *buf, Int32ConstArrayView items)=0
Sérialise dans buf les entités de la famille family().
Interface d'une famille d'entités.
Definition IItemFamily.h:84
IItemFamily * family() const override
Famille associée.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:569
Array< Int32 > Int32Array
Tableau dynamique à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:214