16#include "arcane/utils/NotSupportedException.h"
17#include "arcane/utils/ArgumentException.h"
18#include "arcane/utils/TraceInfo.h"
19#include "arcane/utils/IHashAlgorithm.h"
20#include "arcane/utils/NotImplementedException.h"
21#include "arcane/utils/Real2.h"
22#include "arcane/utils/Real3.h"
23#include "arcane/utils/Real2x2.h"
24#include "arcane/utils/Real3x3.h"
25#include "arcane/utils/ArrayShape.h"
26#include "arcane/utils/Array.h"
27#include "arcane/utils/String.h"
28#include "arcane/utils/Ref.h"
30#include "arcane/core/IDataFactory.h"
31#include "arcane/core/IData.h"
32#include "arcane/core/IDataVisitor.h"
34#include "arcane/core/datatype/DataAllocationInfo.h"
35#include "arcane/core/datatype/DataStorageTypeInfo.h"
36#include "arcane/core/datatype/DataStorageBuildInfo.h"
37#include "arcane/core/datatype/DataTypeTraits.h"
39#include "arcane/impl/ScalarData.h"
40#include "arcane/impl/SerializedData.h"
41#include "arcane/impl/DataStorageFactory.h"
43#include "arcane/core/ISerializer.h"
44#include "arcane/core/internal/IDataInternal.h"
57template <
class DataType>
62 ARCCORE_DEFINE_REFERENCE_COUNTED_INCLASS_METHODS();
97 explicit ScalarDataT(
const DataStorageBuildInfo& dsbi);
98 ScalarDataT(
const ScalarDataT<DataType>& rhs)
100 , m_trace(rhs.m_trace)
102 , m_allocation_info(rhs.m_allocation_info)
143 visitor->applyDataVisitor(
this);
165 DataInterfaceType* _cloneTrueEmpty()
const {
return new ThatClass(m_trace); }
171template<
typename DataType> ScalarDataT<DataType>::
172ScalarDataT(
const DataStorageBuildInfo& dsbi)
173: m_value(DataTypeTraitsT<DataType>::defaultValue())
174, m_trace(dsbi.traceMng())
182template <
typename DataType>
183DataStorageTypeInfo ScalarDataT<DataType>::
184staticStorageTypeInfo()
186 typedef DataTypeTraitsT<DataType> TraitsType;
188 Int32 nb_basic_type = TraitsType::nbBasicType();
191 return DataStorageTypeInfo(bdt,nb_basic_type,dimension,multi_tag);
197template<
typename DataType>
201 return staticStorageTypeInfo();
207template <
typename DataType>
238template <
typename DataType>
257template <
typename DataType>
267template <
typename DataType>
275 DataType
ttmp = m_value;
279 if (mode == ISerializer::ModeReserve)
290template <
typename DataType>
300template <
typename DataType>
304 m_value = DataType();
310template <
typename DataType>
319template <
typename DataType>
324 const Byte*
ptr =
reinterpret_cast<const Byte*
>(&m_value);
332template <
typename DataType>
344template <
typename DataType>
357template <
typename DataType>
370template <
typename DataType>
380template <
typename DataType>
390template <
typename DataType>
400template <
typename DataType>
410template <
typename DataType>
436template class ScalarDataT<Byte>;
437template class ScalarDataT<Real>;
438template class ScalarDataT<Int16>;
439template class ScalarDataT<Int32>;
440template class ScalarDataT<Int64>;
441template class ScalarDataT<Real2>;
442template class ScalarDataT<Real3>;
443template class ScalarDataT<Real2x2>;
444template class ScalarDataT<Real3x3>;
#define ARCANE_THROW(exception_class,...)
Macro pour envoyer une exception avec formattage.
Tableau d'items de types quelconques.
Informations sur l'allocation d'une donnée.
Informations pour le calcul du hash d'une donnée.
Informations de type pour un conteneur de données.
Interface du pattern visitor pour une donnée tableau 2D.
Interface du pattern visitor pour une donnée tableau.
Interface du gestionnaire de fabrique d'une donnée.
Interface d'une opération sur une donnée.
Interface du pattern visitor pour une donnée.
Interface d'un algorithme de hashage.
Interface d'une donnée scalaire d'un type T.
Interface du pattern visitor pour une donnée scalaire.
Interface d'une donnée sérialisée.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
void computeHash(DataHashInfo &hash_info) override
Calcule le hash de la donnée.
Donnée scalaire d'un type T.
DataType & value() override
Valeur de la donnée.
void assignSerializedData(const ISerializedData *sdata) override
Assigne à la donnée les valeurs sérialisées sdata.
ArrayShape shape() const override
Forme du tableau pour une donnée 1D ou 2D.
void setShape(const ArrayShape &) override
Positionne la forme du tableau.
DataInterfaceType * cloneTrueEmpty() override
Clone la donnée mais sans éléments.
void setAllocationInfo(const DataAllocationInfo &v) override
Positionne les informations sur l'allocation.
Ref< IData > cloneEmptyRef() override
Clone la donnée mais sans éléments.
void copy(const IData *data) override
Copie la donnée data dans l'instance courante.
void resize(Integer) override
Redimensionne la donnée.
IDataInternal * _commonInternal() override
void setName(const String &name) override
Positionne le nom de la donnée (interne)
DataInterfaceType * cloneTrue() override
Clone la donnée.
void visit(IDataVisitor *visitor) override
Applique le visiteur à la donnée.
void visitArray2(IArray2DataVisitor *visitor) override
Applique le visiteur à la donnée.
void fillDefault() override
Remplit la donnée avec sa valeur par défaut.
IData * cloneEmpty() override
Clone la donnée mais sans éléments. L'instance créée doit être détruite par l'opérateur 'delete'.
const DataType & value() const override
Valeur de la donnée.
Integer multiTag() const override
Tag multiple. 0 si non multiple, 1 si multiple, 2 si multiple pour les variable MultiArray (obsolète)
DataAllocationInfo allocationInfo() const override
Informations sur l'allocation.
void swapValues(IData *data) override
Échange les valeurs de data avec celles de l'instance.
Integer dimension() const override
Dimension. 0 pour un scalaire, 1 pour un tableau mono-dim, 2 pour un tableau bi-dim.
void serialize(ISerializer *sbuf, IDataOperation *operation) override
Sérialise la donnée en appliquant l'opération operation.
void computeHash(IHashAlgorithm *algo, ByteArray &output) const override
Calcul une clé de hashage sur cette donnée.
void visitArray(IArrayDataVisitor *visitor) override
Applique le visiteur à la donnée.
Ref< DataInterfaceType > cloneTrueRef() override
Clone la donnée.
Ref< DataInterfaceType > cloneTrueEmptyRef() override
Clone la donnée mais sans éléments.
IData * clone() override
Clone la donnée. L'instance créée doit être détruite par l'opérateur 'delete'.
Ref< ISerializedData > createSerializedDataRef(bool use_basic_type) const override
Sérialise la donnée.
eDataType dataType() const override
Type de la donnée.
Ref< IData > cloneRef() override
Clone la donnée.
DataStorageTypeInfo storageTypeInfo() const override
Informations sur le type de conteneur de la donnée.
void visit(IScalarDataVisitor *visitor) override
Applique le visiteur à la donnée.
void allocateBufferForSerializedData(ISerializedData *sdata) override
Alloue la mémoire pour lire les valeurs sérialisées sdata.
void visitScalar(IScalarDataVisitor *visitor) override
Applique le visiteur à la donnée.
Exception lorsqu'un argument est invalide.
Vue constante d'un tableau de type T.
Interface d'un sérialiseur.
eMode
Mode de fonctionnement du sérialiseur.
@ ModePut
Le sérialiseur attend des reserve()
@ ModeGet
Le sérialiseur attend des get()
Interface du gestionnaire de traces.
Exception lorsqu'une opération n'est pas supportée.
Implémentation thread-safe d'un compteur de référence.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Ref< ISerializedData > arcaneCreateSerializedDataRef(eDataType data_type, Int64 memory_size, Integer nb_dim, Int64 nb_element, Int64 nb_base_element, bool is_multi_size, Int64ConstArrayView dimensions)
Créé des données sérialisées.
eDataType
Type d'une donnée.
eBasicDataType
Type d'une donnée de base.