21 #ifndef GF_SERIALIZATION_OPS_H 22 #define GF_SERIALIZATION_OPS_H 31 #include <type_traits> 32 #include <unordered_map> 33 #include <unordered_set> 37 #include "Serialization.h" 41 #ifndef DOXYGEN_SHOULD_SKIP_THIS 49 GF_CORE_API Serializer& operator|(Serializer& ar,
bool data);
55 GF_CORE_API Serializer& operator|(Serializer& ar,
char data);
61 GF_CORE_API Serializer& operator|(Serializer& ar, uint8_t data);
67 GF_CORE_API Serializer& operator|(Serializer& ar, uint16_t data);
73 GF_CORE_API Serializer& operator|(Serializer& ar, uint32_t data);
79 GF_CORE_API Serializer& operator|(Serializer& ar, uint64_t data);
85 GF_CORE_API Serializer& operator|(Serializer& ar, int8_t data);
91 GF_CORE_API Serializer& operator|(Serializer& ar, int16_t data);
97 GF_CORE_API Serializer& operator|(Serializer& ar, int32_t data);
103 GF_CORE_API Serializer& operator|(Serializer& ar, int64_t data);
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 523 #endif // GF_SERIALIZATION_OPS_H A deserializer from a binary file.
Definition: Serialization.h:151
Deserializer & operator|(Deserializer &ar, T &data)
Deserialize an enum object.
Definition: SerializationOps.h:322
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:497
A span.
Definition: Span.h:36
Deserializer & operator|(Deserializer &ar, T(&array)[N])
Deserialize an array object.
Definition: SerializationOps.h:378
Deserializer & operator|(Deserializer &ar, std::set< T > &set)
Deserialize a set object.
Definition: SerializationOps.h:422
constexpr std::size_t getSize() const noexcept
Get the number of elements.
Definition: Span.h:555
Deserializer & operator|(Deserializer &ar, Span< T > array)
Deserialize an array object.
Definition: SerializationOps.h:354
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:164
Serializer & operator|(Serializer &ar, const std::map< K, V > &map)
Serialize a map object.
Definition: SerializationOps.h:228
A serializer to a binary file.
Definition: Serialization.h:43
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:180
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
Serializer & operator|(Serializer &ar, const std::unordered_set< T > &set)
Serialize a set object.
Definition: SerializationOps.h:212
Deserializer & operator|(Deserializer &ar, std::vector< T > &array)
Deserialize an array object.
Definition: SerializationOps.h:398
Deserializer & operator|(Deserializer &ar, std::map< K, V > &map)
Deserialize a map object.
Definition: SerializationOps.h:470
Serializer & operator|(Serializer &ar, T data)
Serialize an enum object.
Definition: SerializationOps.h:111
Serializer & operator|(Serializer &ar, const T(&array)[N])
Serialize an array object.
Definition: SerializationOps.h:148
Serializer & operator|(Serializer &ar, const std::set< T > &set)
Serialize a set object.
Definition: SerializationOps.h:196
Serializer & operator|(Serializer &ar, const std::unordered_map< K, V > &map)
Serialize a map object.
Definition: SerializationOps.h:244