Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
IDataInternal.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2024 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/* IDataInternal.h (C) 2000-2024 */
9/* */
10/* Partie interne à Arcane de IData. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_INTERNAL_IDATAINTERNAL_H
13#define ARCANE_CORE_INTERNAL_IDATAINTERNAL_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19#include "arcane/utils/UniqueArray.h"
20#include "arcane/utils/IHashAlgorithm.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27class IDataCompressor;
28class INumericDataInternal;
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
36{
37 public:
38
40 Int64 m_original_dim1_size = 0;
41 Int64 m_original_dim2_size = 0;
42 IDataCompressor* m_compressor = nullptr;
43};
44
45/*---------------------------------------------------------------------------*/
46/*---------------------------------------------------------------------------*/
51{
52 public:
53
54 explicit DataHashInfo(IHashAlgorithmContext* context)
55 : m_context(context)
56 {}
57
58 public:
59
60 IHashAlgorithmContext* context() const { return m_context; }
61 Int32 version() const { return m_version; }
62 void setVersion(Int32 v) { m_version = v; }
63
64 private:
65
66 IHashAlgorithmContext* m_context = nullptr;
67 Int32 m_version = 0;
68};
69
70/*---------------------------------------------------------------------------*/
71/*---------------------------------------------------------------------------*/
76class ARCANE_CORE_EXPORT IDataInternal
77{
78 public:
79
80 virtual ~IDataInternal() = default;
81
82 public:
83
99 {
100 ARCANE_UNUSED(buf);
101 return false;
102 }
103
118 {
119 ARCANE_UNUSED(buf);
120 return false;
121 }
122
124 virtual INumericDataInternal* numericData() { return nullptr; }
125
132};
133
134/*---------------------------------------------------------------------------*/
135/*---------------------------------------------------------------------------*/
144class ARCANE_CORE_EXPORT INumericDataInternal
145{
146 public:
147
148 virtual ~INumericDataInternal() = default;
149
150 public:
151
154
156 virtual Int32 extent0() const = 0;
157
163};
164
165/*---------------------------------------------------------------------------*/
166/*---------------------------------------------------------------------------*/
167
169: public IDataInternal
170{
171};
172
173/*---------------------------------------------------------------------------*/
174/*---------------------------------------------------------------------------*/
179template <class DataType>
181: public IDataInternal
182{
183 public:
184
186 virtual void reserve(Integer new_capacity) =0;
187
190
192 virtual Integer capacity() const =0;
193
195 virtual void shrink() const =0;
196
198 virtual void resize(Integer new_size) =0;
199
201 virtual void dispose() =0;
202};
203
204/*---------------------------------------------------------------------------*/
205/*---------------------------------------------------------------------------*/
210template <class DataType>
212: public IDataInternal
213{
214 public:
215
217 virtual void reserve(Integer new_capacity) = 0;
218
221
223 virtual void resizeOnlyDim1(Int32 new_dim1_size) = 0;
224
226 virtual void resize(Int32 new_dim1_size, Int32 new_dim2_size) = 0;
227
229 virtual void shrink() const = 0;
230};
231
232/*---------------------------------------------------------------------------*/
233/*---------------------------------------------------------------------------*/
234
235} // End namespace Arcane
236
237/*---------------------------------------------------------------------------*/
238/*---------------------------------------------------------------------------*/
239
240namespace Arcane::impl
241{
248extern "C++" ARCANE_CORE_EXPORT void
249copyContiguousData(INumericDataInternal* destination, ConstMemoryView source, RunQueue& queue);
250
257extern "C++" ARCANE_CORE_EXPORT void
258copyContiguousData(IData* destination, IData* source, RunQueue& queue);
259
260extern "C++" ARCANE_CORE_EXPORT void
261fillContiguousDataGeneric(IData* data, const void* fill_address,
262 Int32 datatype_size, RunQueue& queue);
263
264template <typename DataType> inline void
265fillContiguousData(IData* data, const DataType& value, RunQueue& queue)
266{
267 constexpr Int32 type_size = static_cast<Int32>(sizeof(DataType));
268 fillContiguousDataGeneric(data, &value, type_size, queue);
269}
270
271} // namespace Arcane::impl
272
273/*---------------------------------------------------------------------------*/
274/*---------------------------------------------------------------------------*/
275
276#endif
Déclarations des types généraux de Arcane.
Classe pour gérer la compression/décompression des données.
Informations pour le calcul du hash d'une donnée.
Interface d'une donnée tableau bi-dimensionnel d'un type T.
virtual Array2< DataType > & _internalDeprecatedValue()=0
Conteneur associé à la donnée.
virtual void resize(Int32 new_dim1_size, Int32 new_dim2_size)=0
Redimensionne le conteneur.
virtual void resizeOnlyDim1(Int32 new_dim1_size)=0
Redimensionne le conteneur.
virtual void shrink() const =0
Libère la mémoire additionnelle éventuellement allouée.
virtual void reserve(Integer new_capacity)=0
Réserve de la mémoire pour new_capacity éléments.
Interface d'une donnée tableau d'un type T.
virtual Integer capacity() const =0
Capacité allouée par le conteneur.
virtual void reserve(Integer new_capacity)=0
Réserve de la mémoire pour new_capacity éléments.
virtual Array< DataType > & _internalDeprecatedValue()=0
Conteneur associé à la donnée.
virtual void shrink() const =0
Libère la mémoire additionnelle éventuellement allouée.
virtual void dispose()=0
Vide le conteneur et libère la mémoire alloué.
virtual void resize(Integer new_size)=0
Redimensionne le conteneur.
Interface d'un service permettant de compresser/décompresser des données.
Partie interne de IData.
virtual void computeHash(DataHashInfo &hash_info)=0
Calcule le hash de la donnée.
virtual bool decompressAndFill(DataCompressionBuffer &buf)
Décompresse les données et remplit les valeurs de la donnée.
virtual bool compressAndClear(DataCompressionBuffer &buf)
Compresse les données et libère la mémoire associée.
virtual INumericDataInternal * numericData()
Interface générique pour les données numériques (nullptr si la donnée n'est pas numérique)
Contexte pour calculer un hash de manière incrémentale.
Interface pour un 'IData' d'un type numérique.
virtual void changeAllocator(const MemoryAllocationOptions &alloc_info)=0
Change l'allocateur de la variable.
virtual Int32 extent0() const =0
Nombre d'éléments de la première dimension.
virtual MutableMemoryView memoryView()=0
Vue mémoire sur la donnée.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Options pour configurer les allocations.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-