Arcane  v3.14.10.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
66 virtual DataStorageTypeInfo storageTypeInfo() const = 0;
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
123 virtual void allocateBufferForSerializedData(ISerializedData* sdata) = 0;
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
174 virtual DataAllocationInfo allocationInfo() const = 0;
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
217 virtual IDataInternal* _commonInternal() = 0;
218};
219
220/*---------------------------------------------------------------------------*/
221/*---------------------------------------------------------------------------*/
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:
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/*---------------------------------------------------------------------------*/
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
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/*---------------------------------------------------------------------------*/
342
343/*---------------------------------------------------------------------------*/
344/*---------------------------------------------------------------------------*/
350: public IData
351{
352};
353
354/*---------------------------------------------------------------------------*/
355/*---------------------------------------------------------------------------*/
360template <class DataType>
362: public IArray2Data
363{
364 public:
365
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>
412{
413 public:
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.
Tableau 2D d'items de types quelconques.
Forme d'un tableau.
Definition ArrayShape.h:40
Tableau d'items de types quelconques.
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
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
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 Integer dimension() const =0
Dimension. 0 pour un scalaire, 1 pour un tableau mono-dim, 2 pour un tableau bi-dim.
virtual Integer multiTag() const =0
Tag multiple. 0 si non multiple, 1 si multiple, 2 si multiple pour les variable MultiArray (obsolète)
virtual eDataType dataType() const =0
Type de la donnée.
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 DataType & value()=0
Valeur de la donnée.
virtual const DataType & value() const =0
Valeur de la donnée.
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.
Vue typée sur une liste d'entités d'une connectivité.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Vue modifiable pour un tableau 2D.
Vue modifiable d'un tableau d'un type T.
Vue constante d'un tableau de type T.
Référence à une instance.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eDataType
Type d'une donnée.
Definition DataTypes.h:39