21#ifndef GF_SERIALIZATION_OPS_H
22#define GF_SERIALIZATION_OPS_H
32#include <unordered_map>
33#include <unordered_set>
37#include "Serialization.h"
41#ifndef DOXYGEN_SHOULD_SKIP_THIS
109 template<typename T, typename E = typename std::enable_if<std::is_enum<T>::value,
T>::type>
112 using U =
typename std::underlying_type<T>::type;
113 return ar |
static_cast<U>(data);
146 template<
typename T, std::
size_t N>
151 for (
auto& item : array) {
152 ar |
const_cast<T&
>(item);
167 for (
auto& item : array) {
168 ar |
const_cast<T&
>(item);
178 template<
typename T, std::
size_t N>
183 for (
auto& item : array) {
184 ar |
const_cast<T&
>(item);
199 for (
auto& item : set) {
200 ar |
const_cast<T&
>(item);
215 for (
auto& item : set) {
216 ar |
const_cast<T&
>(item);
226 template<
typename K,
typename V>
231 for (
auto& item : map) {
232 ar |
const_cast<K&
>(item.first) |
const_cast<V&
>(item.second);
242 template<
typename K,
typename V>
247 for (
auto& item : map) {
248 ar |
const_cast<K&
>(item.first) |
const_cast<V&
>(item.second);
320 template<typename T, typename E = typename std::enable_if<std::is_enum<T>::value,
T>::type>
323 using U =
typename std::underlying_type<T>::type;
326 data =
static_cast<T>(underlying);
365 for (
auto& item : array) {
376 template<
typename T, std::
size_t N>
386 template<
typename T, std::
size_t N>
407 for (std::size_t i = 0; i < size; ++i) {
410 array.emplace_back(std::move(item));
431 for (std::size_t i = 0; i < size; ++i) {
434 set.emplace(std::move(item));
455 for (std::size_t i = 0; i < size; ++i) {
458 set.emplace(std::move(item));
468 template<
typename K,
typename V>
479 for (std::size_t i = 0; i < size; ++i) {
485 map.emplace(std::move(key), std::move(value));
495 template<
typename K,
typename V>
506 for (std::size_t i = 0; i < size; ++i) {
512 map.emplace(std::move(key), std::move(value));
518#ifndef DOXYGEN_SHOULD_SKIP_THIS
A deserializer from a binary file.
Definition: Serialization.h:151
GF_CORE_API Deserializer & operator|(Deserializer &ar, bool &data)
Deserialize a bool object.
GF_CORE_API Deserializer & operator|(Deserializer &ar, int64_t &data)
Deserialize a signed integer object.
GF_CORE_API Deserializer & operator|(Deserializer &ar, uint64_t &data)
Deserialize an unsigned integer object.
GF_CORE_API Deserializer & operator|(Deserializer &ar, std::string &str)
Deserialize a string object.
GF_CORE_API Deserializer & operator|(Deserializer &ar, int32_t &data)
Deserialize a signed integer object.
Deserializer & operator|(Deserializer &ar, std::vector< T > &array)
Deserialize an array object.
Definition: SerializationOps.h:398
Deserializer & operator|(Deserializer &ar, std::array< T, N > &array)
Deserialize an array object.
Definition: SerializationOps.h:388
Deserializer & operator|(Deserializer &ar, std::unordered_set< T > &set)
Deserialize a set object.
Definition: SerializationOps.h:446
GF_CORE_API Deserializer & operator|(Deserializer &ar, int16_t &data)
Deserialize a signed integer object.
Deserializer & operator|(Deserializer &ar, std::unordered_map< K, V > &map)
Deserialize a map object.
Definition: SerializationOps.h:497
Deserializer & operator|(Deserializer &ar, std::map< K, V > &map)
Deserialize a map object.
Definition: SerializationOps.h:470
Deserializer & operator|(Deserializer &ar, T(&array)[N])
Deserialize an array object.
Definition: SerializationOps.h:378
bool readSizeHeader(std::size_t &size)
Read a size header.
Deserializer & operator|(Deserializer &ar, T &data)
Deserialize an enum object.
Definition: SerializationOps.h:322
GF_CORE_API Deserializer & operator|(Deserializer &ar, uint8_t &data)
Deserialize an unsigned integer object.
GF_CORE_API Deserializer & operator|(Deserializer &ar, uint32_t &data)
Deserialize an unsigned integer object.
GF_CORE_API Deserializer & operator|(Deserializer &ar, float &data)
Deserialize a single precision float object.
Deserializer & operator|(Deserializer &ar, std::set< T > &set)
Deserialize a set object.
Definition: SerializationOps.h:422
GF_CORE_API Deserializer & operator|(Deserializer &ar, char &data)
Deserialize a char object.
GF_CORE_API Deserializer & operator|(Deserializer &ar, double &data)
Deserialize a double precision float object.
GF_CORE_API Deserializer & operator|(Deserializer &ar, int8_t &data)
Deserialize a signed integer object.
Deserializer & operator|(Deserializer &ar, Span< T > array)
Deserialize an array object.
Definition: SerializationOps.h:354
GF_CORE_API Deserializer & operator|(Deserializer &ar, uint16_t &data)
Deserialize an unsigned integer object.
A serializer to a binary file.
Definition: Serialization.h:43
GF_CORE_API Serializer & operator|(Serializer &ar, bool data)
Serialize a boolean object.
Serializer & operator|(Serializer &ar, const std::vector< T > &array)
Serialize an array object.
Definition: SerializationOps.h:164
Serializer & operator|(Serializer &ar, T data)
Serialize an enum object.
Definition: SerializationOps.h:111
GF_CORE_API Serializer & operator|(Serializer &ar, uint16_t data)
Serialize an unsigned integer object.
Serializer & operator|(Serializer &ar, const char *str)=delete
Do not serialize a string object via a pointer.
GF_CORE_API Serializer & operator|(Serializer &ar, float data)
Serialize a single precision float object.
Serializer & operator|(Serializer &ar, const std::unordered_map< K, V > &map)
Serialize a map object.
Definition: SerializationOps.h:244
Serializer & operator|(Serializer &ar, const std::unordered_set< T > &set)
Serialize a set object.
Definition: SerializationOps.h:212
void writeSizeHeader(std::size_t size)
Write a size header.
GF_CORE_API Serializer & operator|(Serializer &ar, uint32_t data)
Serialize an unsigned integer object.
Serializer & operator|(Serializer &ar, const T(&array)[N])
Serialize an array object.
Definition: SerializationOps.h:148
Serializer & operator|(Serializer &ar, const std::array< T, N > &array)
Serialize an array object.
Definition: SerializationOps.h:180
GF_CORE_API Serializer & operator|(Serializer &ar, int8_t data)
Serialize a signed integer object.
GF_CORE_API Serializer & operator|(Serializer &ar, int16_t data)
Serialize a signed integer object.
GF_CORE_API Serializer & operator|(Serializer &ar, uint64_t data)
Serialize an unsigned integer object.
GF_CORE_API Serializer & operator|(Serializer &ar, int64_t data)
Serialize a signed integer object.
GF_CORE_API Serializer & operator|(Serializer &ar, int32_t data)
Serialize a signed integer object.
GF_CORE_API Serializer & operator|(Serializer &ar, double data)
Serialize a double precision float object.
Serializer & operator|(Serializer &ar, const std::map< K, V > &map)
Serialize a map object.
Definition: SerializationOps.h:228
Serializer & operator|(Serializer &ar, const std::set< T > &set)
Serialize a set object.
Definition: SerializationOps.h:196
GF_CORE_API Serializer & operator|(Serializer &ar, uint8_t data)
Serialize an unsigned integer object.
GF_CORE_API Serializer & operator|(Serializer &ar, char data)
Serialize a char object.
GF_CORE_API Serializer & operator|(Serializer &ar, const std::string &str)
Serialize a string object.
A span.
Definition: Span.h:417
constexpr std::size_t getSize() const noexcept
Get the number of elements.
Definition: Span.h:555
The namespace for gf classes.
Definition: Action.h:35