Reflection for RapidJSON
0.0.17
Reflection for serializing/deserializing with RapidJSON
Toggle main menu visibility
Loading...
Searching...
No Matches
binary
serializable.h
Go to the documentation of this file.
1
#ifndef REFLECTIVE_RAPIDJSON_BINARY_SERIALIZABLE_H
2
#define REFLECTIVE_RAPIDJSON_BINARY_SERIALIZABLE_H
3
9
10
#include "
./reflector.h
"
11
12
#include <iosfwd>
13
#include <string>
14
15
namespace
ReflectiveRapidJSON
{
16
17
using
BinaryVersionNotSupported
=
VersionNotSupported<BinaryVersion>
;
18
22
template
<
typename
Type, BinaryVersion v>
struct
BinarySerializable
{
23
using
VersionNotSupported
=
BinaryVersionNotSupported
;
24
void
toBinary
(std::ostream &outputStream,
BinaryVersion
version
= 0)
const
;
25
BinaryVersion
restoreFromBinary
(std::istream &inputStream);
26
static
Type
fromBinary
(std::istream &inputStream);
27
28
static
constexpr
const
char
*
qualifiedName
=
"ReflectiveRapidJSON::BinarySerializable"
;
29
static
constexpr
auto
version
= v;
30
31
#if __cplusplus > 201707L
32
bool
operator==(
const
BinarySerializable<Type, v>
&)
const
=
default
;
33
#endif
34
};
35
36
template
<
typename
Type, BinaryVersion v>
inline
void
BinarySerializable<Type, v>::toBinary
(std::ostream &outputStream,
BinaryVersion
version
)
const
37
{
38
BinaryReflector::BinarySerializer
(&outputStream).
write
(
static_cast<
const
Type &
>
(*
this
),
version
);
39
}
40
41
template
<
typename
Type, BinaryVersion v>
inline
BinaryVersion
BinarySerializable<Type, v>::restoreFromBinary
(std::istream &inputStream)
42
{
43
return
BinaryReflector::BinaryDeserializer
(&inputStream).
read
(
static_cast<
Type &
>
(*
this
));
44
}
45
46
template
<
typename
Type, BinaryVersion v> Type
BinarySerializable<Type, v>::fromBinary
(std::istream &inputStream)
47
{
48
Type object;
49
static_cast<
BinarySerializable<Type>
&
>
(object).
restoreFromBinary
(inputStream);
50
return
object;
51
}
52
60
#define REFLECTIVE_RAPIDJSON_MAKE_BINARY_SERIALIZABLE(T) \
61
template <> struct ReflectiveRapidJSON::AdaptedBinarySerializable<T> : Traits::Bool<true> {}
62
63
}
// namespace ReflectiveRapidJSON
64
65
#endif
// REFLECTIVE_RAPIDJSON_BINARY_SERIALIZABLE_H
reflector.h
Contains BinaryReader and BinaryWriter supporting binary (de)serialization of primitive and custom ty...
ReflectiveRapidJSON::BinaryReflector::BinaryDeserializer
The BinaryDeserializer class can read various data types, including custom ones, from an std::istream...
Definition
reflector.h:73
ReflectiveRapidJSON::BinaryReflector::BinaryDeserializer::read
void read(Type &pair)
Definition
reflector.h:126
ReflectiveRapidJSON::BinaryReflector::BinarySerializer
The BinarySerializer class can write various data types, including custom ones, to an std::ostream.
Definition
reflector.h:100
ReflectiveRapidJSON::BinaryReflector::BinarySerializer::write
void write(const Type &pair)
Definition
reflector.h:257
ReflectiveRapidJSON
Definition
traits.h:13
ReflectiveRapidJSON::BinaryVersion
std::uint64_t BinaryVersion
Definition
reflector.h:38
ReflectiveRapidJSON::BinaryVersionNotSupported
VersionNotSupported< BinaryVersion > BinaryVersionNotSupported
Definition
serializable.h:17
ReflectiveRapidJSON::BinarySerializable
The BinarySerializable class provides the CRTP-base for (de)serializable objects.
Definition
serializable.h:22
ReflectiveRapidJSON::BinarySerializable::fromBinary
static Type fromBinary(std::istream &inputStream)
Definition
serializable.h:46
ReflectiveRapidJSON::BinarySerializable::qualifiedName
static constexpr const char * qualifiedName
Definition
serializable.h:28
ReflectiveRapidJSON::BinarySerializable::toBinary
void toBinary(std::ostream &outputStream, BinaryVersion version=0) const
Definition
serializable.h:36
ReflectiveRapidJSON::BinarySerializable::VersionNotSupported
BinaryVersionNotSupported VersionNotSupported
Definition
serializable.h:23
ReflectiveRapidJSON::BinarySerializable::restoreFromBinary
BinaryVersion restoreFromBinary(std::istream &inputStream)
Definition
serializable.h:41
ReflectiveRapidJSON::BinarySerializable< VersionlessBase, 1 >::version
static constexpr auto version
Definition
serializable.h:29
ReflectiveRapidJSON::VersionNotSupported
Definition
versioning.h:29
Generated on
for Reflection for RapidJSON by
1.18.0