Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
IndirectItemFamilySerializer.cc
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2023 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/* IndirectItemFamilySerializer.cc (C) 2000-2023 */
9/* */
10/* Sérialisation/Désérialisation indirecte des familles d'entités. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#include "arcane/ISerializer.h"
15#include "arcane/IItemFamily.h"
16#include "arcane/ItemInfoListView.h"
17#include "arcane/Item.h"
18
19#include "arcane/mesh/IndirectItemFamilySerializer.h"
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane::mesh
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30IndirectItemFamilySerializer::
31IndirectItemFamilySerializer(IItemFamily* family)
32: TraceAccessor(family->traceMng())
33, m_family(family)
34{
35}
36
37/*---------------------------------------------------------------------------*/
38/*---------------------------------------------------------------------------*/
39
40void IndirectItemFamilySerializer::
42{
43 const Integer nb_item = local_ids.size();
45
46 switch(sbuf->mode()){
47 case ISerializer::ModeReserve:
48 sbuf->reserve(DT_Int64,1); // Pour le nombre d'entités
49 sbuf->reserveSpan(DT_Int64,nb_item); // Pour les uniqueId() des entités.
50 break;
51 case ISerializer::ModePut:
52 sbuf->putInt64(nb_item);
53 {
55 for( Integer z=0; z<nb_item; ++z ){
56 Item item = items_internal[ local_ids[z] ];
57 particle_unique_ids[z] = item.uniqueId().asInt64();
58 }
59 sbuf->putSpan(particle_unique_ids);
60 }
61 break;
62 case ISerializer::ModeGet:
63 deserializeItems(sbuf,nullptr);
64 break;
65 }
66}
67
68/*---------------------------------------------------------------------------*/
69/*---------------------------------------------------------------------------*/
70
71void IndirectItemFamilySerializer::
72deserializeItems(ISerializer* sbuf,Int32Array* local_ids)
73{
75
76 Int64 nb_item = sbuf->getInt64();
77 unique_ids.resize(nb_item);
78 sbuf->getSpan(unique_ids);
79
82 work_local_id->resize(nb_item);
83
84 m_family->itemsUniqueIdToLocalId(*work_local_id,unique_ids,true);
85}
86
87/*---------------------------------------------------------------------------*/
88/*---------------------------------------------------------------------------*/
89
90IItemFamily* IndirectItemFamilySerializer::
91family() const
92{
93 return m_family;
94}
95
96/*---------------------------------------------------------------------------*/
97/*---------------------------------------------------------------------------*/
98
99}
100
101/*---------------------------------------------------------------------------*/
102/*---------------------------------------------------------------------------*/
Tableau d'items de types quelconques.
Interface d'une famille d'entités.
Vue sur une liste pour obtenir des informations sur les entités.
Classe de base d'un élément de maillage.
Definition Item.h:83
ItemUniqueId uniqueId() const
Identifiant unique sur tous les domaines.
Definition Item.h:216
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Vue constante d'un tableau de type T.
Vecteur 1D de données avec sémantique par valeur (style STL).
@ DT_Int64
Donnée de type entier 64 bits.
Definition DataTypes.h:44