Arcane  v3.16.7.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-2025 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-2025 */
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;
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/*---------------------------------------------------------------------------*/
50class DataHashInfo
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
131 virtual void computeHash(DataHashInfo& hash_info) = 0;
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
162 virtual void changeAllocator(const MemoryAllocationOptions& alloc_info) = 0;
163
167 virtual IMemoryAllocator* memoryAllocator() const = 0;
168};
169
170/*---------------------------------------------------------------------------*/
171/*---------------------------------------------------------------------------*/
172
174: public IDataInternal
175{
176};
177
178/*---------------------------------------------------------------------------*/
179/*---------------------------------------------------------------------------*/
184template <class DataType>
186: public IDataInternal
187{
188 public:
189
191 virtual void reserve(Integer new_capacity) =0;
192
195
197 virtual Integer capacity() const =0;
198
200 virtual void shrink() const =0;
201
203 virtual void resize(Integer new_size) =0;
204
206 virtual void dispose() =0;
207};
208
209/*---------------------------------------------------------------------------*/
210/*---------------------------------------------------------------------------*/
215template <class DataType>
217: public IDataInternal
218{
219 public:
220
222 virtual void reserve(Integer new_capacity) = 0;
223
226
228 virtual void resizeOnlyDim1(Int32 new_dim1_size) = 0;
229
231 virtual void resize(Int32 new_dim1_size, Int32 new_dim2_size) = 0;
232
234 virtual void shrink() const = 0;
235};
236
237/*---------------------------------------------------------------------------*/
238/*---------------------------------------------------------------------------*/
239
240} // End namespace Arcane
241
242/*---------------------------------------------------------------------------*/
243/*---------------------------------------------------------------------------*/
244
245namespace Arcane::impl
246{
253extern "C++" ARCANE_CORE_EXPORT void
254copyContiguousData(INumericDataInternal* destination, ConstMemoryView source, RunQueue& queue);
255
262extern "C++" ARCANE_CORE_EXPORT void
263copyContiguousData(IData* destination, IData* source, RunQueue& queue);
264
265extern "C++" ARCANE_CORE_EXPORT void
266fillContiguousDataGeneric(IData* data, const void* fill_address,
267 Int32 datatype_size, RunQueue& queue);
268
269template <typename DataType> inline void
270fillContiguousData(IData* data, const DataType& value, RunQueue& queue)
271{
272 constexpr Int32 type_size = static_cast<Int32>(sizeof(DataType));
273 fillContiguousDataGeneric(data, &value, type_size, queue);
274}
275
276} // namespace Arcane::impl
277
278/*---------------------------------------------------------------------------*/
279/*---------------------------------------------------------------------------*/
280
281#endif
Déclarations des types généraux de Arcane.
Tableau 2D d'items de types quelconques.
Tableau d'items de types quelconques.
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 IMemoryAllocator * memoryAllocator() const =0
Allocateur utilisé pour la donnée.
virtual MutableMemoryView memoryView()=0
Vue mémoire sur la donnée.
Options pour configurer les allocations.
Vue modifiable sur une zone mémoire contigue contenant des éléments de taille fixe.
Definition MemoryView.h:156
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
std::int32_t Int32
Type entier signé sur 32 bits.