21 #ifndef GF_SERIALIZATION_OPS_H    22 #define GF_SERIALIZATION_OPS_H    30 #include <type_traits>    31 #include <unordered_map>    32 #include <unordered_set>    35 #include "BufferRef.h"    36 #include "Portability.h"    37 #include "Serialization.h"    40 #ifndef DOXYGEN_SHOULD_SKIP_THIS    48   GF_API Serializer& 
operator|(Serializer& ar, 
bool data);
    54   GF_API Serializer& 
operator|(Serializer& ar, 
char data);
    60   GF_API Serializer& 
operator|(Serializer& ar, uint8_t data);
    66   GF_API Serializer& 
operator|(Serializer& ar, uint16_t data);
    72   GF_API Serializer& 
operator|(Serializer& ar, uint32_t data);
    78   GF_API Serializer& 
operator|(Serializer& ar, uint64_t data);
    84   GF_API Serializer& 
operator|(Serializer& ar, int8_t data);
    90   GF_API Serializer& 
operator|(Serializer& ar, int16_t data);
    96   GF_API Serializer& 
operator|(Serializer& ar, int32_t data);
   102   GF_API Serializer& 
operator|(Serializer& ar, int64_t data);
   108   template<typename T, typename E = typename std::enable_if<std::is_enum<T>::value, 
T>::type>
   111     using U = 
typename std::underlying_type<T>::type;
   112     return ar | 
static_cast<U>(data);
   143   template<
typename T, std::
size_t N>
   148     for (
auto& item : array) {
   149       ar | 
const_cast<T&
>(item);
   164     for (
auto& item : array) {
   165       ar | 
const_cast<T&
>(item);
   175   template<
typename T, std::
size_t N>
   180     for (
auto& item : array) {
   181       ar | 
const_cast<T&
>(item);
   196     for (
auto& item : 
set) {
   197       ar | 
const_cast<T&
>(item);
   212     for (
auto& item : 
set) {
   213       ar | 
const_cast<T&
>(item);
   223   template<
typename K, 
typename V>
   228     for (
auto& item : map) {
   229       ar | 
const_cast<K&
>(item.first) | const_cast<V&>(item.second);
   239   template<
typename K, 
typename V>
   244     for (
auto& item : map) {
   245       ar | 
const_cast<K&
>(item.first) | const_cast<V&>(item.second);
   313   template<typename T, typename E = typename std::enable_if<std::is_enum<T>::value, 
T>::type>
   316     using U = 
typename std::underlying_type<T>::type;
   319     data = 
static_cast<T>(underlying);
   364     for (
auto& item : array) {
   375   template<
typename T, std::
size_t N>
   385   template<
typename T, std::
size_t N>
   406     for (std::size_t i = 0; i < size; ++i) {
   409       array.emplace_back(std::move(item));
   430     for (std::size_t i = 0; i < size; ++i) {
   433       set.emplace(std::move(item));
   454     for (std::size_t i = 0; i < size; ++i) {
   457       set.emplace(std::move(item));
   467   template<
typename K, 
typename V>
   478     for (std::size_t i = 0; i < size; ++i) {
   484       map.emplace(std::move(key), std::move(value));
   494   template<
typename K, 
typename V>
   505     for (std::size_t i = 0; i < size; ++i) {
   511       map.emplace(std::move(key), std::move(value));
   517 #ifndef DOXYGEN_SHOULD_SKIP_THIS   522 #endif // GF_SERIALIZATION_OPS_H A deserializer from a binary file. 
Definition: Serialization.h:153
 
void writeSizeHeader(std::size_t size)
Write a size header. 
 
Deserializer & operator|(Deserializer &ar, std::unordered_map< K, V > &map)
Deserialize a map object. 
Definition: SerializationOps.h:496
 
constexpr std::size_t getSize() const noexcept
Get the number of elements. 
Definition: BufferRef.h:136
 
Deserializer & operator|(Deserializer &ar, T(&array)[N])
Deserialize an array object. 
Definition: SerializationOps.h:377
 
Deserializer & operator|(Deserializer &ar, std::set< T > &set)
Deserialize a set object. 
Definition: SerializationOps.h:421
 
A reference to a modifiable buffer and its size. 
Definition: BufferRef.h:43
 
bool readSizeHeader(std::size_t &size)
Read a size header. 
 
Serializer & operator|(Serializer &ar, const std::vector< T > &array)
Serialize an array object. 
Definition: SerializationOps.h:161
 
Serializer & operator|(Serializer &ar, const std::map< K, V > &map)
Serialize a map object. 
Definition: SerializationOps.h:225
 
A serializer to a binary file. 
Definition: Serialization.h:45
 
The namespace for gf classes. 
Definition: Action.h:35
 
Serializer & operator|(Serializer &ar, const std::array< T, N > &array)
Serialize an array object. 
Definition: SerializationOps.h:177
 
Deserializer & operator|(Deserializer &ar, std::array< T, N > &array)
Deserialize an array object. 
Definition: SerializationOps.h:387
 
Deserializer & operator|(Deserializer &ar, std::unordered_set< T > &set)
Deserialize a set object. 
Definition: SerializationOps.h:445
 
Serializer & operator|(Serializer &ar, const std::unordered_set< T > &set)
Serialize a set object. 
Definition: SerializationOps.h:209
 
Deserializer & operator|(Deserializer &ar, BufferRef< T > array)
Deserialize an array object. 
Definition: SerializationOps.h:353
 
Deserializer & operator|(Deserializer &ar, std::vector< T > &array)
Deserialize an array object. 
Definition: SerializationOps.h:397
 
Deserializer & operator|(Deserializer &ar, std::map< K, V > &map)
Deserialize a map object. 
Definition: SerializationOps.h:469
 
Deserializer & operator|(Deserializer &ar, T &data)
Definition: SerializationOps.h:315
 
Serializer & operator|(Serializer &ar, T data)
Serialize an enum object. 
Definition: SerializationOps.h:110
 
Serializer & operator|(Serializer &ar, const T(&array)[N])
Serialize an array object. 
Definition: SerializationOps.h:145
 
Serializer & operator|(Serializer &ar, const std::set< T > &set)
Serialize a set object. 
Definition: SerializationOps.h:193
 
Serializer & operator|(Serializer &ar, const std::unordered_map< K, V > &map)
Serialize a map object. 
Definition: SerializationOps.h:241