7#include <gtest/gtest.h>
9#include "arccore/serialize/BasicSerializer.h"
12#include "arccore/base/FatalErrorException.h"
13#include "arccore/base/ValueFiller.h"
27 virtual void checkValid() = 0;
34template <
typename T>
class ValueTraits;
35#define VALUE_TRAITS(type_name) \
36 template <> class ValueTraits<type_name> \
40 static ISerializer::eDataType dataType() { return ISerializer::DT_##type_name; } \
41 static void getValue(ISerializer* s, type_name& v) { v = s->get##type_name(); } \
59template <
typename DataType>
63 using ValueTraitsType = ValueTraits<DataType>;
68 : m_data_type(ValueTraitsType::dataType())
77 case ISerializer::ModeReserve:
85 s->
put(m_array_values[0]);
90 ValueTraitsType::getValue(s, m_unique_value);
94 void checkValid()
override
96 std::cout <<
"ref_size=" << m_array_values.
size()
97 <<
" result_size=" << m_result_array_values.
size() <<
"\n";
98 ASSERT_EQ(m_array_values, m_result_array_values);
99 ASSERT_EQ(m_array_values[0], m_unique_value);
102 void resizeAndFill(
Int32 size)
104 m_array_values.
resize(size);
105 ValueFiller::fillRandom(542, m_array_values.
span());
112 DataType m_unique_value = {};
133 case ISerializer::ModeReserve:
137 s->
put(m_ref_string);
140 s->
get(m_result_string);
144 void checkValid()
override
146 ASSERT_EQ(m_ref_string, m_result_string);
178 template <
typename DataType>
void add(
Int32 size)
181 sval->resizeAndFill(size);
184 void addString(
const String& v)
206 values.add<
Int8>(6357);
208 values.add<
Int16>(16353);
209 values.add<
Real>(29123);
210 values.add<
Int32>(16);
211 values.add<
Byte>(3289);
212 values.add<
Int64>(12932);
213 values.addString(
"Ceci est un test de chaîne de caractères");
215 serializer->
setMode(ISerializer::ModeReserve);
216 values.doSerialize(serializer);
219 values.doSerialize(serializer);
221 values.doSerialize(serializer);
Gestion des références à une classe C++.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Integer size() const
Nombre d'éléments du vecteur.
Span< const T > span() const
Vue immutable sur ce tableau.
void resize(Int64 s)
Change le nombre d'éléments du tableau à s.
void add(ConstReferenceType val)
Ajoute l'élément val à la fin du tableau.
Classe de base d'une exception.
Type flottant demi-précision.
Interface d'un sérialiseur.
virtual void get(RealArrayView values)=0
Récupère le tableau values.
virtual void allocateBuffer()=0
Alloue la mémoire du sérialiseur.
@ ModePut
Le sérialiseur attend des reserve()
@ ModeGet
Le sérialiseur attend des get()
virtual void getArray(Array< Real > &values)=0
Redimensionne et remplit values.
virtual void reserve(eDataType 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 eMode mode() const =0
Mode de fonctionnement actuel.
virtual void put(Span< const Real > values)=0
Ajoute le tableau values.
virtual void setMode(eMode new_mode)=0
Positionne le fonctionnement actuel.
virtual void reserveArray(Span< const Real > values)=0
Réserve pour sauver le nombre d'éléments et les values éléments.
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).
Espace de nom de Arccore.
ARCCORE_SERIALIZE_EXPORT Ref< ISerializer > createSerializer()
Créé une instance de ISerializer.
float Float32
Type flottant IEEE-753 simple précision.
std::int64_t Int64
Type entier signé sur 64 bits.
std::int32_t Int32
Type entier signé sur 32 bits.
std::int8_t Int8
Type entier signé sur 8 bits.
unsigned char Byte
Type d'un octet.