16#include "arcane/utils/ArgumentException.h"
17#include "arcane/utils/NotSupportedException.h"
18#include "arcane/utils/TraceInfo.h"
19#include "arcane/utils/IHashAlgorithm.h"
20#include "arcane/utils/NotImplementedException.h"
21#include "arcane/utils/Array.h"
22#include "arcane/utils/ArrayShape.h"
24#include "arcane/core/datatype/DataAllocationInfo.h"
25#include "arcane/core/datatype/DataStorageTypeInfo.h"
26#include "arcane/core/datatype/DataStorageBuildInfo.h"
27#include "arcane/core/datatype/DataTypeTraits.h"
29#include "arcane/impl/SerializedData.h"
30#include "arcane/impl/DataStorageFactory.h"
32#include "arcane/core/ISerializer.h"
33#include "arcane/core/IDataVisitor.h"
35#include "arcane/core/internal/IDataInternal.h"
53 ARCCORE_DEFINE_REFERENCE_COUNTED_INCLASS_METHODS();
58 typedef StringScalarData ThatClass;
68 explicit Internal(StringScalarData* p) : m_p(p){}
74 m_p->computeHash(hash_info);
79 StringScalarData* m_p =
nullptr;
87 explicit StringScalarData(
const DataStorageBuildInfo& dsbi);
88 StringScalarData(
const StringScalarData& rhs)
90 , m_trace(rhs.m_trace)
92 , m_allocation_info(rhs.m_allocation_info)
110 StringScalarData*
cloneTrue()
override {
return new ThatClass(*
this); }
132 visitor->applyVisitor(
this);
136 visitor->applyDataVisitor(
this);
160: m_trace(dsbi.traceMng())
168DataStorageTypeInfo StringScalarData::
169staticStorageTypeInfo()
172 Int32 nb_basic_type = 0;
175 return DataStorageTypeInfo(bdt,nb_basic_type,
dimension,multi_tag);
184 return staticStorageTypeInfo();
193 ARCANE_UNUSED(use_basic_type);
196 Int64 nb_element = 1;
198 Int64 nb_base_element = len;
200 extents.
add(nb_element);
203 nb_base_element,
false, extents);
204 sd->setConstBytes(base_values);
247 ARCANE_UNUSED(operation);
250 if (mode == ISerializer::ModeReserve) {
277 ARCANE_UNUSED(operation);
306 hash_info.setVersion(2);
316 const DataInterfaceType* true_data =
dynamic_cast<const DataInterfaceType*
>(data);
328 DataInterfaceType* true_data =
dynamic_cast<DataInterfaceType*
>(data);
340 visitor->applyVisitor(
this);
Exception lorsqu'un argument est invalide.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
constexpr Integer size() const noexcept
Nombre d'éléments du tableau.
Informations sur l'allocation d'une donnée.
Informations pour le calcul du hash d'une donnée.
Informations pour construire une instance de 'IData'.
static void registerDataFactory(IDataFactoryMng *dfm)
Enregistre dans dfm une fabrique pour la donnée DataType.
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.
virtual void updateHash(Span< const std::byte > input)=0
Ajoute le tableau input au hash calculé
Interface d'un algorithme de hashage.
virtual void computeHash64(Span< const Byte > input, ByteArray &output)
Calcule la valeur du hash pour le tableau input.
Interface d'une donnée scalaire d'un type T.
virtual DataType & value()=0
Valeur de la donnée.
Interface du pattern visitor pour une donnée scalaire.
Interface d'une donnée sérialisée.
virtual eDataType baseDataType() const =0
Type de la donnée.
virtual Int64 memorySize() const =0
Indique le nombre d'octets qu'il faut allouer pour stocker ou lire les données.
virtual void allocateMemory(Int64 size)=0
Alloue un tableaux pour contenir les éléments sérialisés.
virtual Int64 nbBaseElement() const =0
Nombre d'éléments du type de base.
virtual Span< const Byte > constBytes() const =0
Valeurs sérialisées.
Interface d'un sérialiseur.
virtual void reserve(eBasicDataType dt, Int64 n)=0
Réserve de la mémoire pour n objets de type dt.
eMode
Mode de fonctionnement du sérialiseur.
@ ModePut
Le sérialiseur attend des reserve()
@ ModeGet
Le sérialiseur attend des get()
virtual void put(Span< const Real > values)=0
Ajoute le tableau values.
virtual eReadMode readMode() const =0
Mode de lecture.
virtual eMode mode() const =0
Mode de fonctionnement actuel.
@ ReadReplace
Replace les éléments actuels par ceux lus.
@ ReadAdd
Ajoute aux éléments actuels ceux lus.
virtual void get(ArrayView< Real > values)=0
Récupère le tableau values.
Interface du gestionnaire de traces.
Exception lorsqu'une opération n'est pas supportée.
Référence à une instance.
Implémentation thread-safe d'un compteur de référence.
constexpr __host__ __device__ SizeType size() const noexcept
Retourne la taille du tableau.
Vue d'un tableau d'éléments de type T.
void computeHash(DataHashInfo &hash_info) override
Calcule le hash de la donnée.
Donnée scalaire d'une chaîne de caractères unicode.
DataStorageTypeInfo storageTypeInfo() const override
Informations sur le type de conteneur de la donnée.
IDataInternal * _commonInternal() override
StringScalarData * cloneTrue() override
Clone la donnée.
DataAllocationInfo allocationInfo() const override
Informations sur l'allocation.
Ref< IData > cloneEmptyRef() override
Clone la donnée mais sans éléments.
void visitArray(IArrayDataVisitor *visitor) override
Applique le visiteur à la donnée.
eDataType dataType() const override
Type de la donnée.
DataType & value() override
Valeur de la donnée.
void resize(Integer) override
Redimensionne la donnée.
void serialize(ISerializer *sbuf, IDataOperation *operation) override
Sérialise la donnée en appliquant l'opération operation.
Ref< DataInterfaceType > cloneTrueRef() override
Clone la donnée.
Ref< ISerializedData > createSerializedDataRef(bool use_basic_type) const override
Sérialise la donnée.
void assignSerializedData(const ISerializedData *sdata) override
Assigne à la donnée les valeurs sérialisées sdata.
Integer multiTag() const override
Tag multiple. 0 si non multiple, 1 si multiple, 2 si multiple pour les variable MultiArray (obsolète)
void setAllocationInfo(const DataAllocationInfo &v) override
Positionne les informations sur l'allocation.
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 setShape(const ArrayShape &) override
Positionne la forme du tableau.
IData * cloneEmpty() override
Clone la donnée mais sans éléments. L'instance créée doit être détruite par l'opérateur 'delete'.
void visitScalar(IScalarDataVisitor *visitor) override
Applique le visiteur à la donnée.
IData * clone() override
Clone la donnée. L'instance créée doit être détruite par l'opérateur 'delete'.
void computeHash(IHashAlgorithm *algo, ByteArray &output) const override
Calcul une clé de hashage sur cette donnée.
ArrayShape shape() const override
Forme du tableau pour une donnée 1D ou 2D.
void visitArray2(IArray2DataVisitor *visitor) override
Applique le visiteur à la donnée.
void swapValues(IData *data) override
Échange les valeurs de data avec celles de l'instance.
Ref< IData > cloneRef() override
Clone la donnée.
void visit(IDataVisitor *visitor) override
Applique le visiteur à la donnée.
const DataType & value() const override
Valeur de la donnée.
Integer dimension() const override
Dimension. 0 pour un scalaire, 1 pour un tableau mono-dim, 2 pour un tableau bi-dim.
void fillDefault() override
Remplit la donnée avec sa valeur par défaut.
void copy(const IData *data) override
Copie la donnée data dans l'instance courante.
StringScalarData * cloneTrueEmpty() override
Clone la donnée mais sans éléments.
void setName(const String &name) override
Positionne le nom de la donnée (interne)
Ref< DataInterfaceType > cloneTrueEmptyRef() override
Clone la donnée mais sans éléments.
Chaîne de caractères unicode.
Span< const Byte > bytes() const
Retourne la conversion de l'instance dans l'encodage UTF-8.
-*- 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.
UniqueArray< Int64 > Int64UniqueArray
Tableau dynamique à une dimension d'entiers 64 bits.
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
Array< Byte > ByteArray
Tableau dynamique à une dimension de caractères.
ConstArrayView< Int32 > Int32ConstArrayView
Equivalent C d'un tableau à une dimension d'entiers 32 bits.
eBasicDataType
Type d'une donnée de base.
@ Byte
Donnée de type octet.
impl::SpanTypeFromSize< conststd::byte, SizeType >::SpanType asBytes(const SpanImpl< DataType, SizeType, Extent > &s)
Converti la vue en un tableau d'octets non modifiables.
ConstArrayView< Byte > ByteConstArrayView
Equivalent C d'un tableau à une dimension de caractères.
auto makeRef(InstanceType *t) -> Ref< InstanceType >
Créé une référence sur un pointeur.
eDataType
Type d'une donnée.
@ DT_Byte
Donnée de type octet.