23#ifndef VCL_BASE_SERIALIZATION_STL_DESERIALIZE_H
24#define VCL_BASE_SERIALIZATION_STL_DESERIALIZE_H
26#include "deserialize.h"
32#include <unordered_map>
43inline void deserialize(std::istream& is, std::string& s)
46 deserialize(is, size);
48 deserializeN(is, s.data(), size);
55template<
typename T, std::
size_t N>
56void deserialize(std::istream& is, std::array<T, N>& a)
58 if constexpr (Serializable<T>) {
74template<
typename K,
typename V>
75void deserialize(std::istream& is, std::map<K, V>& m)
79 deserialize(is, size);
80 for (std::size_t i = 0; i < size; ++i) {
82 if constexpr (Serializable<K>) {
90 if constexpr (Serializable<V>) {
91 value.deserialize(is);
94 deserialize(is, value);
96 m.insert({std::move(key), std::move(value)});
104template<
typename K,
typename V>
105void deserialize(std::istream& is, std::unordered_map<K, V>& m)
109 deserialize(is, size);
110 for (std::size_t i = 0; i < size; ++i) {
112 if constexpr (Serializable<K>) {
116 deserialize(is, key);
120 if constexpr (Serializable<V>) {
121 value.deserialize(is);
124 deserialize(is, value);
126 m.insert({std::move(key), std::move(value)});
135void deserialize(std::istream& is, std::vector<T>& v)
138 deserialize(is, size);
140 if constexpr (Serializable<T>) {
153void deserialize(std::istream& is, std::vector<std::any>& v)
156 deserialize(is, size);
158 if constexpr (Serializable<T>) {
159 for (std::any& e : v) {
166 for (std::any& e : v) {
168 deserialize(is, obj);
void deserialize(std::istream &is)
Deserializes the box from the given input stream.
Definition box.h:476