Arcane  v3.14.10.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:
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 }
57
58public:
61
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_ */
Tableau d'items de types quelconques.
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.
virtual IMesh * mesh() const =0
Maillage associé
Sérialisation/Désérialisation des familles d'entités.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Vue constante d'un tableau de type T.
Exception lorsqu'une erreur fatale est survenue.