7#include <gtest/gtest.h>
9#include "arccore/serialize/BasicSerializer.h"
12#include "arccore/base/FatalErrorException.h"
13#include "arccore/base/ValueFiller.h"
15#include "arccore/base/Float128.h"
16#include "arccore/base/Int128.h"
30 virtual void checkValid() = 0;
38template <
typename T>
class ValueTraits;
39#define VALUE_TRAITS(type_name,basic_type_name) \
40 template <> class ValueTraits<type_name> \
44 static eBasicDataType dataType() { return eBasicDataType::basic_type_name; } \
45 static void getValue(ISerializer* s, type_name& v) { v = s->get##type_name(); } \
48#define VALUE_TRAITS2(type_name) VALUE_TRAITS(type_name,type_name)
58VALUE_TRAITS(Real,Float64);
67template <
typename DataType>
71 using ValueTraitsType = ValueTraits<DataType>;
76 : m_data_type(ValueTraitsType::dataType())
83 Int64 size = m_array_values.size();
85 case ISerializer::ModeReserve:
86 std::cout <<
"ReserveArray type=" << m_data_type <<
" size=" << m_array_values.size() <<
"\n";
92 std::cout <<
"PutArray type=" << m_data_type <<
" size=" << m_array_values.size() <<
"\n";
95 s->
put(m_array_values[0]);
100 ValueTraitsType::getValue(s, m_unique_value);
104 void checkValid()
override
106 std::cout <<
"ref_size=" << m_array_values.size()
107 <<
" result_size=" << m_result_array_values.size() <<
"\n";
108 ASSERT_EQ(m_array_values, m_result_array_values);
109 ASSERT_EQ(m_array_values[0], m_unique_value);
112 void resizeAndFill(Int32 size)
114 m_array_values.resize(size);
115 ValueFiller::fillRandom(542, m_array_values.span());
122 DataType m_unique_value = {};
129class StringSerializeValue
134 explicit StringSerializeValue(
const String& v)
143 case ISerializer::ModeReserve:
147 s->
put(m_ref_string);
150 s->
get(m_result_string);
154 void checkValid()
override
156 ASSERT_EQ(m_ref_string, m_result_string);
188 template <
typename DataType>
void add(Int32 size)
191 sval->resizeAndFill(size);
194 void addString(
const String& v)
216 values.add<
Int8>(6357);
218 values.add<Int16>(16353);
219 values.add<Real>(29123);
220 values.add<Int32>(16);
221 values.add<
Byte>(3289);
222 values.add<Int64>(12932);
224 values.add<
Int128>(32422);
225 values.addString(
"Ceci est un test de chaîne de caractères");
227 serializer->
setMode(ISerializer::ModeReserve);
228 values.doSerialize(serializer);
231 values.doSerialize(serializer);
233 values.doSerialize(serializer);
Fichier contenant les définitions des types de données basiques gérés par Arccore.
Gestion des références à une classe C++.
Classe de base d'une exception.
Interface d'un sérialiseur.
virtual void allocateBuffer()=0
Alloue la mémoire du sérialiseur.
virtual void setMode(eMode new_mode)=0
Positionne le fonctionnement actuel.
Référence à une instance.
InstanceType * get() const
Instance associée ou nullptr si aucune.
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
virtual void reserve(eBasicDataType dt, Int64 n)=0
Réserve de la mémoire pour n objets de type dt.
virtual void putArray(Span< const Real > values)=0
Sauve le nombre d'éléments et les values éléments.
virtual void reserveArray(Span< const Real > values)=0
Réserve pour sauver le nombre d'éléments et les values éléments.
virtual eMode mode() const =0
Mode de fonctionnement actuel.
virtual void getArray(Array< Real > &values)=0
Redimensionne et remplit values.
@ 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 void get(ArrayView< Real > values)=0
Récupère le tableau values.
eBasicDataType
Type d'une donnée de base.
unsigned char Byte
Type d'un octet.
Espace de nom de Arccore.
Arcane::Float128 Float128
Type représentant un floattan sur 128 bits.
Arcane::BFloat16 BFloat16
Type 'Brain Float16'.
float Float32
Type flottant IEEE-753 simple précision (binary32)
Arcane::Float16 Float16
Type 'Float16' (binary16)
ARCCORE_SERIALIZE_EXPORT Ref< ISerializer > createSerializer()
Créé une instance de ISerializer.
Arcane::Int8 Int8
Type représentant un entier sur 8 bits.
Arcane::Int128 Int128
Type représentant un entier sur 128 bits.