21#ifndef GF_SERIALIZATION_OPS_H
22#define GF_SERIALIZATION_OPS_H
32#include <unordered_map>
33#include <unordered_set>
38#include "Serialization.h"
42#ifndef DOXYGEN_SHOULD_SKIP_THIS
110 template<typename T, typename E = typename std::enable_if<std::is_enum<T>::value,
T>::type>
113 using U =
typename std::underlying_type<T>::type;
114 return ar |
static_cast<U>(data);
124 return ar | data.m_data;
157 template<
typename T, std::
size_t N>
162 for (
auto& item : array) {
163 ar |
const_cast<T&
>(item);
178 for (
auto& item : array) {
179 ar |
const_cast<T&
>(item);
189 template<
typename T, std::
size_t N>
194 for (
auto& item : array) {
195 ar |
const_cast<T&
>(item);
210 for (
auto& item : set) {
211 ar |
const_cast<T&
>(item);
226 for (
auto& item : set) {
227 ar |
const_cast<T&
>(item);
237 template<
typename K,
typename V>
242 for (
auto& item : map) {
243 ar |
const_cast<K&
>(item.first) |
const_cast<V&
>(item.second);
253 template<
typename K,
typename V>
258 for (
auto& item : map) {
259 ar |
const_cast<K&
>(item.first) |
const_cast<V&
>(item.second);
331 template<typename T, typename E = typename std::enable_if<std::is_enum<T>::value,
T>::type>
334 using U =
typename std::underlying_type<T>::type;
337 data =
static_cast<T>(underlying);
348 return ar | data.m_data;
386 for (
auto& item : array) {
397 template<
typename T, std::
size_t N>
407 template<
typename T, std::
size_t N>
428 for (std::size_t i = 0; i < size; ++i) {
431 array.emplace_back(std::move(item));
452 for (std::size_t i = 0; i < size; ++i) {
455 set.emplace(std::move(item));
476 for (std::size_t i = 0; i < size; ++i) {
479 set.emplace(std::move(item));
489 template<
typename K,
typename V>
500 for (std::size_t i = 0; i < size; ++i) {
506 map.emplace(std::move(key), std::move(value));
516 template<
typename K,
typename V>
527 for (std::size_t i = 0; i < size; ++i) {
533 map.emplace(std::move(key), std::move(value));
539#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, Flags< E > &data)
Deserialize flags.
Definition: SerializationOps.h:347
Deserializer & operator|(Deserializer &ar, std::vector< T > &array)
Deserialize an array object.
Definition: SerializationOps.h:419
Deserializer & operator|(Deserializer &ar, std::array< T, N > &array)
Deserialize an array object.
Definition: SerializationOps.h:409
Deserializer & operator|(Deserializer &ar, std::unordered_set< T > &set)
Deserialize a set object.
Definition: SerializationOps.h:467
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:518
Deserializer & operator|(Deserializer &ar, std::map< K, V > &map)
Deserialize a map object.
Definition: SerializationOps.h:491
Deserializer & operator|(Deserializer &ar, T(&array)[N])
Deserialize an array object.
Definition: SerializationOps.h:399
bool readSizeHeader(std::size_t &size)
Read a size header.
Deserializer & operator|(Deserializer &ar, T &data)
Deserialize an enum object.
Definition: SerializationOps.h:333
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:443
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:375
GF_CORE_API Deserializer & operator|(Deserializer &ar, uint16_t &data)
Deserialize an unsigned integer object.
Bitfield relying on an enumeration.
Definition: Flags.h:48
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:175
Serializer & operator|(Serializer &ar, T data)
Serialize an enum object.
Definition: SerializationOps.h:112
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:255
Serializer & operator|(Serializer &ar, const std::unordered_set< T > &set)
Serialize a set object.
Definition: SerializationOps.h:223
Serializer & operator|(Serializer &ar, Flags< E > data)
Serialize flags.
Definition: SerializationOps.h:123
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:159
Serializer & operator|(Serializer &ar, const std::array< T, N > &array)
Serialize an array object.
Definition: SerializationOps.h:191
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:239
Serializer & operator|(Serializer &ar, const std::set< T > &set)
Serialize a set object.
Definition: SerializationOps.h:207
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:414
constexpr std::size_t getSize() const noexcept
Get the number of elements.
Definition: Span.h:552
The namespace for gf classes.