Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
IData.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/* IData.h (C) 2000-2023 */
9/* */
10/* Interface d'une donnée. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_IDATA_H
13#define ARCANE_IDATA_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ArcaneTypes.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22namespace Arcane
23{
24
25/*---------------------------------------------------------------------------*/
26/*---------------------------------------------------------------------------*/
32class ARCANE_CORE_EXPORT IData
33{
35
36 public:
37
38 virtual ~IData() = default;
39
40 public:
41
43 virtual eDataType dataType() const = 0;
44
46 virtual Integer dimension() const = 0;
47
49 virtual Integer multiTag() const = 0;
50
52 ARCCORE_DEPRECATED_2020("Use cloneRef() instead")
53 virtual IData* clone() = 0;
54
56 ARCCORE_DEPRECATED_2020("Use cloneEmptyRef() instead")
57 virtual IData* cloneEmpty() = 0;
58
60 virtual Ref<IData> cloneRef() = 0;
61
63 virtual Ref<IData> cloneEmptyRef() = 0;
64
67
69 virtual void serialize(ISerializer* sbuf, IDataOperation* operation) = 0;
70
78 virtual void resize(Integer new_size) = 0;
79
85 virtual void serialize(ISerializer* sbuf, Int32ConstArrayView ids, IDataOperation* operation) = 0;
86
88 virtual void fillDefault() = 0;
89
91 virtual void setName(const String& name) = 0;
92
107 virtual Ref<ISerializedData> createSerializedDataRef(bool use_basic_type) const = 0;
108
115 virtual void assignSerializedData(const ISerializedData* sdata) = 0;
116
124
130 virtual void copy(const IData* data) = 0;
131
139 virtual void swapValues(IData* data) = 0;
140
147 virtual void computeHash(IHashAlgorithm* algo, ByteArray& output) const = 0;
148
163 virtual ArrayShape shape() const = 0;
164
166 virtual void setShape(const ArrayShape& new_shape) = 0;
167
168 public:
169
171 virtual void setAllocationInfo(const DataAllocationInfo& v) = 0;
172
175
176 public:
177
179 virtual void visit(IDataVisitor* visitor) = 0;
180
187 virtual void visitScalar(IScalarDataVisitor* visitor) = 0;
188
195 virtual void visitArray(IArrayDataVisitor* visitor) = 0;
196
203 virtual void visitArray2(IArray2DataVisitor* visitor) = 0;
204
214 virtual void visitMultiArray2(IMultiArray2DataVisitor* visitor);
215
218};
219
220/*---------------------------------------------------------------------------*/
221/*---------------------------------------------------------------------------*/
226: public IData
227{
228 public:
229 virtual void visit(IDataVisitor* visitor) = 0;
231 virtual void visit(IScalarDataVisitor* visitor) = 0;
232};
233
234/*---------------------------------------------------------------------------*/
235/*---------------------------------------------------------------------------*/
240template <class DataType>
242: public IScalarData
243{
244 public:
245 typedef IScalarDataT<DataType> ThatClass;
246
247 public:
249 virtual DataType& value() = 0;
250
252 virtual const DataType& value() const = 0;
253
255 ARCCORE_DEPRECATED_2020("Use cloneTrueRef() instead")
256 virtual ThatClass* cloneTrue() = 0;
257
259 ARCCORE_DEPRECATED_2020("Use cloneTrueEmpty() instead")
260 virtual ThatClass* cloneTrueEmpty() = 0;
261
263 virtual Ref<ThatClass> cloneTrueRef() = 0;
264
266 virtual Ref<ThatClass> cloneTrueEmptyRef() = 0;
267};
268
269/*---------------------------------------------------------------------------*/
270/*---------------------------------------------------------------------------*/
275: public IData
276{
277 public:
278 virtual void visit(IDataVisitor* visitor) = 0;
280 virtual void visit(IArrayDataVisitor* visitor) = 0;
281};
282
283/*---------------------------------------------------------------------------*/
284/*---------------------------------------------------------------------------*/
289template <class DataType>
291: public IArrayData
292{
293 public:
294
295 typedef IArrayDataT<DataType> ThatClass;
296
297 public:
298
300 ARCCORE_DEPRECATED_2021("Use view() instead.")
301 virtual Array<DataType>& value() = 0;
302
304 ARCCORE_DEPRECATED_2021("Use view() instead.")
305 virtual const Array<DataType>& value() const = 0;
306
307 public:
308
310 virtual ConstArrayView<DataType> view() const = 0;
311
313 virtual ArrayView<DataType> view() = 0;
314
316 ARCCORE_DEPRECATED_2020("Use cloneTrueRef() instead")
317 virtual ThatClass* cloneTrue() = 0;
318
320 ARCCORE_DEPRECATED_2020("Use cloneTrueEmptyRef() instead")
321 virtual ThatClass* cloneTrueEmpty() = 0;
322
324 virtual Ref<ThatClass> cloneTrueRef() = 0;
325
327 virtual Ref<ThatClass> cloneTrueEmptyRef() = 0;
328
330 virtual IArrayDataInternalT<DataType>* _internal() = 0;
331};
332
333/*---------------------------------------------------------------------------*/
334/*---------------------------------------------------------------------------*/
339: public IData
340{
341};
342
343/*---------------------------------------------------------------------------*/
344/*---------------------------------------------------------------------------*/
350: public IData
351{
352};
353
354/*---------------------------------------------------------------------------*/
355/*---------------------------------------------------------------------------*/
360template <class DataType>
362: public IArray2Data
363{
364 public:
365
366 typedef IArray2DataT<DataType> ThatClass;
367
369 ARCCORE_DEPRECATED_2021("Use view() instead.")
370 virtual Array2<DataType>& value() = 0;
371
373 ARCCORE_DEPRECATED_2021("Use view() instead.")
374 virtual const Array2<DataType>& value() const = 0;
375
376 public:
377
379 virtual ConstArray2View<DataType> view() const = 0;
380
382 virtual Array2View<DataType> view() = 0;
383
385 ARCCORE_DEPRECATED_2020("Use cloneTrueRef() instead")
386 virtual ThatClass* cloneTrue() = 0;
387
389 ARCCORE_DEPRECATED_2020("Use cloneTrueEmptyRef() instead")
390 virtual ThatClass* cloneTrueEmpty() = 0;
391
393 virtual Ref<ThatClass> cloneTrueRef() = 0;
394
396 virtual Ref<ThatClass> cloneTrueEmptyRef() = 0;
397
399 virtual IArray2DataInternalT<DataType>* _internal() = 0;
400};
401
402/*---------------------------------------------------------------------------*/
403/*---------------------------------------------------------------------------*/
409template <class DataType>
411: public IMultiArray2Data
412{
413 public:
414 typedef IMultiArray2DataT<DataType> ThatClass;
415
416
419
421 virtual const MultiArray2<DataType>& value() const = 0;
422
424 virtual ThatClass* cloneTrue() = 0;
425
427 virtual ThatClass* cloneTrueEmpty() = 0;
428};
429
430/*---------------------------------------------------------------------------*/
431/*---------------------------------------------------------------------------*/
432
433} // End namespace Arcane
434
435/*---------------------------------------------------------------------------*/
436/*---------------------------------------------------------------------------*/
437
438#endif
#define ARCCORE_DECLARE_REFERENCE_COUNTED_INCLASS_METHODS()
Macro pour déclarer les méthodes virtuelles gérant les compteurs de référence.
Vue modifiable pour un tableau 2D.
Tableau 2D d'items de types quelconques.
Forme d'un tableau.
Definition ArrayShape.h:40
Vue modifiable d'un tableau d'un type T.
Tableau d'items de types quelconques.
Vue constante d'un tableau de type T.
Informations sur l'allocation d'une donnée.
Informations de type pour un conteneur de données.
Interface d'une donnée tableau bi-dimensionnel d'un type T.
Interface d'une donnée tableau bi-dimensionnel d'un type T.
Definition IData.h:363
virtual Ref< ThatClass > cloneTrueRef()=0
virtual Array2< T > & value()=0
virtual IArray2DataInternalT< T > * _internal()=0
virtual ThatClass * cloneTrue()=0
virtual ConstArray2View< T > view() const=0
virtual Ref< ThatClass > cloneTrueEmptyRef()=0
virtual ThatClass * cloneTrueEmpty()=0
Interface du pattern visitor pour une donnée tableau 2D.
Interface d'une donnée tableau 2D.
Definition IData.h:340
Interface d'une donnée tableau d'un type T.
Interface d'une donnée tableau d'un type T.
Definition IData.h:292
virtual IArrayDataInternalT< T > * _internal()=0
virtual ThatClass * cloneTrueEmpty()=0
virtual ThatClass * cloneTrue()=0
virtual Ref< ThatClass > cloneTrueRef()=0
virtual Ref< ThatClass > cloneTrueEmptyRef()=0
virtual ConstArrayView< T > view() const=0
virtual Array< T > & value()=0
Interface du pattern visitor pour une donnée tableau.
Interface d'une donnée tableau 1D.
Definition IData.h:276
virtual void visit(IDataVisitor *visitor)=0
Applique le visiteur à la donnée.
virtual void visit(IArrayDataVisitor *visitor)=0
Applique le visiteur à la donnée.
Partie interne de IData.
Interface d'une opération sur une donnée.
Interface du pattern visitor pour une donnée.
Interface d'une donnée.
Definition IData.h:33
virtual Ref< ISerializedData > createSerializedDataRef(bool use_basic_type) const =0
Sérialise la donnée.
virtual void allocateBufferForSerializedData(ISerializedData *sdata)=0
Alloue la mémoire pour lire les valeurs sérialisées sdata.
virtual void copy(const IData *data)=0
Copie la donnée data dans l'instance courante.
virtual DataAllocationInfo allocationInfo() const =0
Informations sur l'allocation.
virtual void serialize(ISerializer *sbuf, IDataOperation *operation)=0
Sérialise la donnée en appliquant l'opération operation.
virtual IData * clone()=0
Clone la donnée. L'instance créée doit être détruite par l'opérateur 'delete'.
virtual void swapValues(IData *data)=0
Échange les valeurs de data avec celles de l'instance.
virtual IData * cloneEmpty()=0
Clone la donnée mais sans éléments. L'instance créée doit être détruite par l'opérateur 'delete'.
virtual void computeHash(IHashAlgorithm *algo, ByteArray &output) const =0
Calcul une clé de hashage sur cette donnée.
virtual void visitArray2(IArray2DataVisitor *visitor)=0
Applique le visiteur à la donnée.
virtual void setName(const String &name)=0
Positionne le nom de la donnée (interne)
virtual IDataInternal * _commonInternal()=0
virtual void visit(IDataVisitor *visitor)=0
Applique le visiteur à la donnée.
virtual Integer dimension() const =0
Dimension. 0 pour un scalaire, 1 pour un tableau mono-dim, 2 pour un tableau bi-dim.
virtual void visitArray(IArrayDataVisitor *visitor)=0
Applique le visiteur à la donnée.
virtual Integer multiTag() const =0
Tag multiple. 0 si non multiple, 1 si multiple, 2 si multiple pour les variable MultiArray (obsolète)
virtual void fillDefault()=0
Remplit la donnée avec sa valeur par défaut.
virtual void setAllocationInfo(const DataAllocationInfo &v)=0
Positionne les informations sur l'allocation.
virtual void visitMultiArray2(IMultiArray2DataVisitor *visitor)
Applique le visiteur à la donnée.
Definition core/Data.cc:56
virtual Ref< IData > cloneRef()=0
Clone la donnée.
virtual void visitScalar(IScalarDataVisitor *visitor)=0
Applique le visiteur à la donnée.
virtual eDataType dataType() const =0
Type de la donnée.
virtual Ref< IData > cloneEmptyRef()=0
Clone la donnée mais sans éléments.
virtual void resize(Integer new_size)=0
Redimensionne la donnée.
virtual void setShape(const ArrayShape &new_shape)=0
Positionne la forme du tableau.
virtual void assignSerializedData(const ISerializedData *sdata)=0
Assigne à la donnée les valeurs sérialisées sdata.
virtual DataStorageTypeInfo storageTypeInfo() const =0
Informations sur le type de conteneur de la donnée.
virtual ArrayShape shape() const =0
Forme du tableau pour une donnée 1D ou 2D.
Interface d'un algorithme de hashage.
Interface d'une donnée tableau 2D à taille multiple d'un type T.
Definition IData.h:412
virtual ThatClass * cloneTrue()=0
Clone la donnée.
virtual ThatClass * cloneTrueEmpty()=0
Clone la donnée mais sans éléments.
virtual const MultiArray2< DataType > & value() const =0
Valeur de la donnée.
virtual MultiArray2< DataType > & value()=0
Valeur de la donnée.
Interface du pattern visitor pour une donnée tableau 2D à taille variable.
Interface d'une donnée tableau multi 2D.
Definition IData.h:351
Interface d'une donnée scalaire d'un type T.
Definition IData.h:243
virtual ThatClass * cloneTrue()=0
virtual DataType & value()=0
Valeur de la donnée.
virtual Ref< ThatClass > cloneTrueRef()=0
virtual ThatClass * cloneTrueEmpty()=0
virtual const DataType & value() const =0
Valeur de la donnée.
virtual Ref< ThatClass > cloneTrueEmptyRef()=0
Interface du pattern visitor pour une donnée scalaire.
Interface d'une donnée scalaire.
Definition IData.h:227
virtual void visit(IDataVisitor *visitor)=0
Applique le visiteur à la donnée.
virtual void visit(IScalarDataVisitor *visitor)=0
Applique le visiteur à la donnée.
Interface d'une donnée sérialisée.
Classe de base des tableau 2D à taille multiple.
Definition MultiArray2.h:61
Référence à une instance.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
Array< Byte > ByteArray
Tableau dynamique à une dimension de caractères.
Definition UtilsTypes.h:208
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
Definition UtilsTypes.h:569
eDataType
Type d'une donnée.
Definition DataTypes.h:39