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"
39template <
class DataType>
40class BasicSerializerDataT
44 BasicSerializerDataT()
46 , m_current_position(0)
54 Int64 cp = m_current_position;
55 Int64 max_size = 1 + m_buffer.size();
58 DataType* ptr = m_buffer.data() + cp;
59 const DataType* vptr = values.
data();
60 for (
Int64 i = 0; i < n; ++i)
62 m_current_position += n;
68 Int64 cp = m_current_position;
69 Int64 max_size = 1 + m_buffer.size();
72 const DataType* ptr = m_buffer.data() + cp;
73 DataType* vptr = values.
data();
74 for (
Int64 i = 0; i < n; ++i)
76 m_current_position += n;
81 Int64 m_reserved_size;
82 Int64 m_current_position;
93class ARCCORE_SERIALIZE_EXPORT BasicSerializer
97 typedef BasicSerializer ThatClass;
108 explicit SizesPrinter(
const BasicSerializer& sbuf)
111 const BasicSerializer& buf()
const {
return m_sbuf; }
115 const BasicSerializer& m_sbuf;
126 BasicSerializer(
const BasicSerializer& sb);
127 ~BasicSerializer()
override;
131 void operator=(
const BasicSerializer& sb);
143 void reserveInteger(
Int64 n)
override
151 void reserve(
const String& str)
override;
176 void put(
const String& value)
override;
318 void get(
String& values)
override;
395 void allocateBuffer()
override;
397 eMode mode()
const override;
398 void setMode(eMode new_mode)
override;
399 eReadMode readMode()
const override;
400 void setReadMode(eReadMode new_read_mode)
override;
416 void setSerializeTypeInfo(
bool v);
417 bool isSerializeTypeInfo()
const;
427 ARCCORE_DEPRECATED_2020(
"internal method")
429 ARCCORE_DEPRECATED_2020(
"internal method")
431 ARCCORE_DEPRECATED_2020(
"internal method")
433 ARCCORE_DEPRECATED_2020(
"internal method")
435 ARCCORE_DEPRECATED_2020(
"internal method")
442 Span<const
Byte> globalBuffer() const;
443 ARCCORE_DEPRECATED_2020(
"Do not use. get total size with totalSize()")
445 Int64 totalSize() const;
446 void preallocate(
Int64 size);
447 void releaseBuffer();
449 void printSizes(std::ostream& o) const;
451 friend inline std::ostream&
454 x.buf().printSizes(o);
466 void initFromBuffer(Span<const Byte> buf);
467 void copy(
const ISerializer* from)
override;
468 void copy(
const BasicSerializer& rhs);
#define ARCCORE_CONSTEXPR
Macro allowing specification of the C++11 'constexpr' keyword.
Modifiable view of an array of type T.
Base class for 1D data vectors.
void putInt128(Int128 value) override
Add value.
void putInt16(Int16 value) override
Add the integer value.
void put(Float16 value) override
Add value.
void get(ArrayView< Int32 > values) override
Retrieve the array values.
void putSpan(Span< const Int8 > values) override
Add the array values.
Float16 getFloat16() override
Retrieve a Float16.
void get(ArrayView< Int64 > values) override
Retrieve the array values.
void put(Int8 value) override
Add value.
void put(Int64 value) override
Add value.
void putBFloat16(BFloat16 value) override
Add value.
void putInt64(Int64 value) override
Add the integer value.
void put(Int16 value) override
Add value.
void getSpan(Span< Real > values) override
Retrieve the array values.
static ARCCORE_CONSTEXPR Integer paddingSize()
Padding and alignment size.
void put(Int128 value) override
Add value.
void put(Span< const Real > values) override
Add the array values.
void put(Float32 value) override
Add value.
Real getReal() override
Retrieve a real number.
void reserve(eBasicDataType dt, Int64 n) override
Reserves memory for n objects of type dt.
void putInt32(Int32 value) override
Add the integer value.
void putFloat16(Float16 value) override
Add value.
void reserveSpan(eDataType dt, Int64 n) override
Reserves memory for n values of dt.
void get(ArrayView< Byte > values) override
Retrieve the array values.
BFloat16 getBFloat16() override
Retrieve a BFloat16.
void putFloat128(Float128 value) override
Add value.
Int64 getInt64() override
Retrieve a size.
void put(Float128 value) override
Add value.
void putFloat32(Float32 value) override
Add value.
Int16 getInt16() override
Retrieve a 16-bit integer.
Integer getInteger() override
Retrieve a size.
void get(ArrayView< Real > values) override
Retrieve the array values.
Int32 getInt32() override
Retrieve an integer.
void put(Int32 value) override
Add value.
void putReal(Real value) override
Add the real value.
Int8 getInt8() override
Retrieve an Int8.
void putInteger(Integer value) override
Add the integer value.
Int128 getInt128() override
Retrieve an Int128.
void putInt8(Int8 value) override
Add value.
Byte getByte() override
Retrieve a byte.
void get(ArrayView< Int16 > values) override
Retrieve the array values.
Float32 getFloat32() override
Retrieve a Float32.
Float128 getFloat128() override
Retrieve a Float128.
void put(Real value) override
Add value.
void putByte(Byte value) override
Add the byte value.
void put(BFloat16 value) override
Add value.
void put(Byte value) override
Add value.
Constant view of an array of type T.
128-bit floating-point type.
Half-precision floating-point type.
virtual void reserve(eBasicDataType dt, Int64 n)=0
Reserves memory for n objects of type dt.
@ DT_Int64
64-bit integer data type
@ DT_Int32
32-bit integer data type
virtual void putSpan(Span< const Real > values)
Add the array values.
virtual void reserveSpan(eBasicDataType dt, Int64 n)=0
Reserves memory for n values of dt.
constexpr __host__ __device__ pointer data() const noexcept
Pointer to the start of the view.
constexpr __host__ __device__ SizeType size() const noexcept
Returns the size of the array.
View of an array of elements of type T.
Unicode character string.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
std::int8_t Int8
Signed integer type of 8 bits.
std::int64_t Int64
Signed integer type of 64 bits.
Int32 Integer
Type representing an integer.
eBasicDataType
Type of a basic data item.
__host__ __device__ void arccoreCheckAt(Int64 i, Int64 max_size)
Checks for potential array overflow.
std::int16_t Int16
Signed integer type of 16 bits.
double Real
Type representing a real number.
unsigned char Byte
Type of a byte.
float Float32
IEEE-753 single-precision floating-point type.
std::int32_t Int32
Signed integer type of 32 bits.