12#ifndef ARCCORE_SERIALIZE_BASICSERIALIZER_H
13#define ARCCORE_SERIALIZE_BASICSERIALIZER_H
17#include "arccore/serialize/ISerializer.h"
19#include "arccore/base/Float16.h"
20#include "arccore/base/BFloat16.h"
21#include "arccore/base/Float128.h"
22#include "arccore/base/Int128.h"
23#include "arccore/collections/Array.h"
38template <
class DataType>
39class BasicSerializerDataT
42 BasicSerializerDataT()
44 , m_current_position(0)
51 Int64 cp = m_current_position;
52 Int64 max_size = 1 + m_buffer.size();
55 DataType* ptr = m_buffer.data() + cp;
56 const DataType* vptr = values.
data();
57 for (
Int64 i = 0; i < n; ++i)
59 m_current_position += n;
65 Int64 cp = m_current_position;
66 Int64 max_size = 1 + m_buffer.size();
69 const DataType* ptr = m_buffer.data() + cp;
70 DataType* vptr = values.
data();
71 for (
Int64 i = 0; i < n; ++i)
73 m_current_position += n;
77 Int64 m_reserved_size;
78 Int64 m_current_position;
88class ARCCORE_SERIALIZE_EXPORT BasicSerializer
92 typedef BasicSerializer ThatClass;
102 explicit SizesPrinter(
const BasicSerializer& sbuf) : m_sbuf(sbuf){}
103 const BasicSerializer& buf()
const {
return m_sbuf; }
105 const BasicSerializer& m_sbuf;
116 BasicSerializer(
const BasicSerializer& sb);
117 ~BasicSerializer()
override;
121 void operator=(
const BasicSerializer& sb);
132 void reserveInteger(
Int64 n)
override
140 void reserve(
const String& str)
override;
165 void put(
const String& value)
override;
307 void get(
String& values)
override;
384 void allocateBuffer()
override;
386 eMode mode()
const override;
387 void setMode(eMode new_mode)
override;
388 eReadMode readMode()
const override;
389 void setReadMode(eReadMode new_read_mode)
override;
404 void setSerializeTypeInfo(
bool v);
405 bool isSerializeTypeInfo()
const;
415 ARCCORE_DEPRECATED_2020(
"internal method")
417 ARCCORE_DEPRECATED_2020(
"internal method")
419 ARCCORE_DEPRECATED_2020(
"internal method")
421 ARCCORE_DEPRECATED_2020(
"internal method")
423 ARCCORE_DEPRECATED_2020(
"internal method")
430 Span<const
Byte> globalBuffer() const;
431 ARCCORE_DEPRECATED_2020(
"Do not use. get total size with totalSize()")
433 Int64 totalSize() const;
434 void preallocate(
Int64 size);
435 void releaseBuffer();
437 void printSizes(std::ostream& o) const;
439 friend inline std::ostream&
442 x.buf().printSizes(o);
454 void initFromBuffer(Span<const Byte> buf);
455 void copy(
const ISerializer* from)
override;
456 void copy(
const BasicSerializer& rhs);
Vue modifiable d'un tableau d'un type T.
Classe de base des vecteurs 1D de données.
void putInt128(Int128 value) override
Ajoute value.
void putInt16(Int16 value) override
Ajoute l'entier value.
void put(Float16 value) override
Ajoute value.
void get(ArrayView< Int32 > values) override
Récupère le tableau values.
void putSpan(Span< const Int8 > values) override
Ajoute le tableau values.
Float16 getFloat16() override
Récupère un Float16.
void get(ArrayView< Int64 > values) override
Récupère le tableau values.
void put(Int8 value) override
Ajoute value.
void put(Int64 value) override
Ajoute value.
void putBFloat16(BFloat16 value) override
Ajoute value.
void putInt64(Int64 value) override
Ajoute l'entier value.
void put(Int16 value) override
Ajoute value.
void getSpan(Span< Real > values) override
Récupère le tableau values.
static ARCCORE_CONSTEXPR Integer paddingSize()
Taille du padding et de l'alignement.
void put(Int128 value) override
Ajoute value.
void put(Span< const Real > values) override
Ajoute le tableau values.
void put(Float32 value) override
Ajoute value.
Real getReal() override
Récupère un réel.
void reserve(eBasicDataType dt, Int64 n) override
Réserve de la mémoire pour n objets de type dt.
void putInt32(Int32 value) override
Ajoute l'entier value.
void putFloat16(Float16 value) override
Ajoute value.
void reserveSpan(eDataType dt, Int64 n) override
Réserve de la mémoire pour n valeurs de dt.
void get(ArrayView< Byte > values) override
Récupère le tableau values.
BFloat16 getBFloat16() override
Récupère un BFloat16.
void putFloat128(Float128 value) override
Ajoute value.
Int64 getInt64() override
Récupère une taille.
void put(Float128 value) override
Ajoute value.
void putFloat32(Float32 value) override
Ajoute value.
Int16 getInt16() override
Récupère un entier sur 16 bits.
Integer getInteger() override
Récupère une taille.
void get(ArrayView< Real > values) override
Récupère le tableau values.
Int32 getInt32() override
Récupère un entier naturel.
void put(Int32 value) override
Ajoute value.
void putReal(Real value) override
Ajoute le réel value.
Int8 getInt8() override
Récupère un Int8.
void putInteger(Integer value) override
Ajoute l'entier value.
Int128 getInt128() override
Récupère un Float32.
void putInt8(Int8 value) override
Ajoute value.
Byte getByte() override
Récupère un octet.
void get(ArrayView< Int16 > values) override
Récupère le tableau values.
Float32 getFloat32() override
Récupère un Float32.
Float128 getFloat128() override
Récupère un Float32.
void put(Real value) override
Ajoute value.
void putByte(Byte value) override
Ajoute l'octet value.
void put(BFloat16 value) override
Ajoute value.
void put(Byte value) override
Ajoute value.
Vue constante d'un tableau de type T.
Type flottant sur 128 bits.
Type flottant demi-précision.
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.
@ DT_Int64
Donnée de type entier 64 bits.
@ DT_Int32
Donnée de type entier 32 bits.
virtual void putSpan(Span< const Real > values)
Ajoute le tableau values.
virtual void reserveSpan(eBasicDataType dt, Int64 n)=0
Réserve de la mémoire pour n valeurs de dt.
Type entier sur 128 bits.
constexpr __host__ __device__ SizeType size() const noexcept
Retourne la taille du tableau.
constexpr __host__ __device__ pointer data() const noexcept
Pointeur sur le début de la vue.
Vue d'un tableau d'éléments de type T.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int8_t Int8
Type entier signé sur 8 bits.
std::int64_t Int64
Type entier signé sur 64 bits.
Int32 Integer
Type représentant un entier.
eBasicDataType
Type d'une donnée de base.
__host__ __device__ void arccoreCheckAt(Int64 i, Int64 max_size)
Vérifie un éventuel débordement de tableau.
std::int16_t Int16
Type entier signé sur 16 bits.
double Real
Type représentant un réel.
unsigned char Byte
Type d'un octet.
float Float32
Type flottant IEEE-753 simple précision.
std::int32_t Int32
Type entier signé sur 32 bits.