10#include <unordered_set>
11#include <unordered_map>
22 template<
typename IntType,
typename EnumType>
class enum_type;
30 constexpr bool is_trivial_array = std::is_scalar<T>::value ==
true && std::is_pointer<T>::value ==
false;
38 template<
typename Stream,
typename IntType,
typename EnumType>
40 template<
typename Stream,
typename IntType,
typename EnumType>
45 template<
typename Stream,
typename T>
inline void pack(
Stream&
s,
const std::set<T>&
value );
46 template<
typename Stream,
typename T>
inline void unpack(
Stream&
s, std::set<T>&
value );
47 template<
typename Stream,
typename T>
inline void pack(
Stream&
s,
const std::unordered_set<T>&
value );
48 template<
typename Stream,
typename T>
inline void unpack(
Stream&
s, std::unordered_set<T>&
value );
50 template<
typename Stream,
typename...
T>
void pack(
Stream&
s,
const std::variant<T...>& sv );
53 template<
typename Stream,
typename T>
inline void pack(
Stream&
s,
const std::deque<T>&
value );
54 template<
typename Stream,
typename T>
inline void unpack(
Stream&
s, std::deque<T>&
value );
56 template<
typename Stream,
typename T,
typename...
U>
57 inline void pack(
Stream&
s,
const boost::container::deque<T, U...>&
value );
58 template<
typename Stream,
typename T,
typename...
U>
61 template<
typename Stream,
typename K,
typename V>
inline void pack(
Stream&
s,
const std::unordered_map<K,V>&
value );
62 template<
typename Stream,
typename K,
typename V>
inline void unpack(
Stream&
s, std::unordered_map<K,V>&
value );
64 template<
typename Stream,
typename K,
typename V>
inline void pack(
Stream&
s,
const std::map<K,V>&
value );
65 template<
typename Stream,
typename K,
typename V>
inline void unpack(
Stream&
s, std::map<K,V>&
value );
67 template<
typename Stream,
typename K,
typename V>
inline void pack(
Stream&
s,
const std::pair<K,V>&
value );
68 template<
typename Stream,
typename K,
typename V>
inline void unpack(
Stream&
s, std::pair<K,V>&
value );
70 template<
typename Stream,
typename T, std::
size_t S>
inline auto pack(
Stream&
s,
const std::array<T,S>&
value ) -> std::enable_if_t<is_trivial_array<T>>;
71 template<
typename Stream,
typename T, std::
size_t S>
inline auto pack(
Stream&
s,
const std::array<T,S>&
value ) -> std::enable_if_t<!is_trivial_array<T>>;
72 template<
typename Stream,
typename T, std::
size_t S>
inline auto unpack(
Stream&
s, std::array<T,S>&
value ) -> std::enable_if_t<is_trivial_array<T>>;
73 template<
typename Stream,
typename T, std::
size_t S>
inline auto unpack(
Stream&
s, std::array<T,S>&
value ) -> std::enable_if_t<!is_trivial_array<T>>;
86 template<
typename Stream,
typename T>
void unpack(
Stream&
s, std::optional<T>& v );
87 template<
typename Stream,
typename T>
void unpack(
Stream&
s,
const T& v );
88 template<
typename Stream,
typename T>
void pack(
Stream&
s,
const std::optional<T>& v );
96 template<
typename Stream>
void unpack(
Stream&
s, std::string& );
97 template<
typename Stream>
void pack(
Stream&
s,
const std::string& );
103 template<
typename Stream,
typename T>
inline void pack(
Stream&
s,
const T& v );
104 template<
typename Stream,
typename T>
inline void unpack(
Stream&
s,
T& v );
106 template<
typename Stream,
typename T>
inline void pack(
Stream&
s,
const std::vector<T>& v );
107 template<
typename Stream,
typename T>
inline void unpack(
Stream&
s, std::vector<T>& v );
115 template<
typename Stream>
inline void pack(
Stream&
s,
const char* v );
116 template<
typename Stream>
inline void pack(
Stream&
s,
const std::vector<char>&
value );
119 template<
typename Stream,
typename T, std::
size_t N>
inline auto pack(
Stream&
s,
const fc::array<T,N>& v) -> std::enable_if_t<is_trivial_array<T>>;
120 template<
typename Stream,
typename T, std::
size_t N>
inline auto pack(
Stream&
s,
const fc::array<T,N>& v) -> std::enable_if_t<!is_trivial_array<T>>;
121 template<
typename Stream,
typename T, std::
size_t N>
inline auto unpack(
Stream&
s,
fc::array<T,N>& v) -> std::enable_if_t<is_trivial_array<T>>;
122 template<
typename Stream,
typename T, std::
size_t N>
inline auto unpack(
Stream&
s,
fc::array<T,N>& v) -> std::enable_if_t<!is_trivial_array<T>>;
124 template<
typename Stream>
inline void pack(
Stream&
s,
const bool& v );
125 template<
typename Stream>
inline void unpack(
Stream&
s,
bool& v );
127 template<
typename T>
inline std::vector<char>
pack(
const T& v );
128 template<
typename T>
inline T unpack(
const std::vector<char>&
s );
an elliptic curve private key.
contains only the public point of an elliptic curve key.
wraps boost::filesystem::path to provide platform independent path manipulation.
An order-preserving dictionary of variants.
stores null, int64, uint64, double, bool, string, std::vector<variant>, and variant_object's.
Concept for reading and writing characters.
void unpack(Stream &s, std::deque< T > &value)
void pack(Stream &s, const std::deque< T > &value)
constexpr bool is_trivial_array
size_t pack_size(const T &v)
sysio::time_point time_point
#define T(meth, val, expected)
serializes a 32 bit signed interger in as few bytes as possible