19 #ifndef OMNI_SERIALIZATION_TRAITS_H_
20 #define OMNI_SERIALIZATION_TRAITS_H_
22 #include <type_traits>
29 namespace serialization {
32 template<
typename T,
bool BASE_OF_SERIALIZATION_INTERFACE =
33 std::is_base_of<serialization::Interface, T>::value>
35 template<
typename STREAM,
typename OBJ>
45 template<
typename STREAM,
typename OBJ>
47 _obj.fromStream(_stream);
55 struct Read<QByteArray, false>{
56 template<
typename STREAM,
typename OBJ>
62 _stream.readRawData(_obj.data(), _length);
69 struct Read<QString, false>{
70 template<
typename STREAM,
typename OBJ>
75 _obj = QString::fromUtf8(_bytes);
80 template<
typename T,
bool BASE_OF_SERIALIZATION_INTERFACE =
81 std::is_base_of<serialization::Interface, T>::value>
83 template<
typename STREAM,
typename OBJ>
92 template<
typename STREAM,
typename OBJ>
94 _obj.toStream(_stream);
102 template<
typename STREAM,
typename OBJ>
104 _stream << uint32_t(_obj.size());
105 _stream.writeRawData(_obj.data(), _obj.size());
113 template<
typename STREAM,
typename OBJ>
124 template<
typename STREAM,
typename T,
typename ... ARGS>
130 template<
typename T,
typename STREAM>
139 template<
typename STREAM,
typename T>
STREAM & operator()(STREAM &_stream, OBJ const &_obj)
Definition: traits.h:103
STREAM & serialize(STREAM &_stream, T const &_t)
Serialize object to stream.
Definition: traits.h:140
STREAM & operator()(STREAM &_stream, OBJ &_obj)
Definition: traits.h:46
Traits for reading a value from stream.
Definition: traits.h:34
T deserializeReturn(STREAM &_stream, T const _default=T())
Deserialize object of type T and return its value.
Definition: traits.h:131
STREAM & operator()(STREAM &_stream, OBJ &_obj)
Definition: traits.h:71
STREAM & deserialize(STREAM &_stream, T &_t, ARGS &&..._args)
Deserialize object of type T from stream with optional additional arguments.
Definition: traits.h:125
STREAM & operator()(STREAM &_stream, OBJ &_obj)
Definition: traits.h:36
STREAM & operator()(STREAM &_stream, OBJ const &_obj)
Definition: traits.h:84
STREAM & operator()(STREAM &_stream, OBJ const &_obj)
Definition: traits.h:114
STREAM & operator()(STREAM &_stream, OBJ const &_obj)
Definition: traits.h:93
STREAM & operator()(STREAM &_stream, OBJ &_obj)
Definition: traits.h:57