47#include <unordered_set>
49#include <boost/type_traits/is_integral.hpp>
50#include <boost/type_traits/integral_constant.hpp>
51#include <boost/mpl/bool.hpp>
68template <
class Archive,
class T>
69inline std::enable_if_t<is_blob_type<T>::type::value,
bool>
do_serialize(Archive &
ar,
T &v)
71 ar.serialize_blob(&v,
sizeof(v));
74template <
class Archive,
class T>
75inline std::enable_if_t<boost::is_integral<T>::value,
bool>
do_serialize(Archive &
ar,
T &v)
80template <
class Archive,
class T>
83 return v.member_do_serialize(
ar);
85template <
class Archive>
88 ar.serialize_blob(&v,
sizeof(v));
98#define BLOB_SERIALIZER(T) \
100 struct is_blob_type<T> { \
101 typedef boost::true_type type; \
108#define VARIANT_TAG(Archive, Type, Tag) \
110 struct variant_serialization_traits<Archive<W>, Type> { \
111 static inline typename Archive<W>::variant_tag_type get_tag() { \
122#define BEGIN_SERIALIZE() \
123 template <bool W, template <bool> class Archive> \
124 bool member_do_serialize(Archive<W> &ar) {
131#define BEGIN_SERIALIZE_OBJECT() \
132 template <bool W, template <bool> class Archive> \
133 bool member_do_serialize(Archive<W> &ar) { \
135 bool r = do_serialize_object(ar); \
139 template <bool W, template <bool> class Archive> \
140 bool do_serialize_object(Archive<W> &ar){
144#define PREPARE_CUSTOM_VECTOR_SERIALIZATION(size, vec) \
145 ::serialization::detail::prepare_custom_vector_serialization(size, vec, typename Archive<W>::is_saving())
150#define END_SERIALIZE() \
158#define FIELD_N(t, f) \
161 bool r = do_serialize(ar, f); \
162 if (!r || !ar.good()) return false; \
172 bool r = do_serialize(ar, f); \
173 if (!r || !ar.good()) return false; \
182 bool r = do_serialize(ar, f); \
183 if (!r || !ar.good()) return false; \
189#define VARINT_FIELD(f) \
192 ar.serialize_varint(f); \
193 if (!ar.good()) return false; \
200#define VARINT_FIELD_N(t, f) \
203 ar.serialize_varint(f); \
204 if (!ar.good()) return false; \
209#define MAGIC_FIELD(m) \
210 std::string magic = m; \
213 ar.serialize_blob((void*)magic.data(), magic.size()); \
214 if (!ar.good()) return false; \
215 if (magic != m) return false; \
220#define VERSION_FIELD(v) \
221 uint32_t version = v; \
224 ar.serialize_varint(version); \
225 if (!ar.good()) return false; \
241 template <
typename T>
246 template <
typename T>
256 template<
class Archive>
267 template<
class Archive>
283 template<
class Archive>
293 template <
class Archive,
class T>
304 template <
class Archive,
class T>
binary_archive< false > ar
Definition cold-outputs.cpp:54
bool do_serialize(Archive< false > &ar, std::vector< T > &v)
Definition containers.h:109
Definition container.h:34
bool do_check_stream_state(Archive &ar, boost::mpl::bool_< true >, bool noeof)
Definition serialization.h:257
void prepare_custom_vector_serialization(size_t size, std::vector< T > &vec, const boost::mpl::bool_< true > &)
Definition serialization.h:242
Definition binary_utils.h:36
bool serialize_noeof(Archive &ar, T &v)
Definition serialization.h:305
bool check_stream_state(Archive &ar, bool noeof=false)
Definition serialization.h:284
bool serialize(Archive &ar, T &v)
Definition serialization.h:294
std::enable_if_t< is_blob_type< T >::type::value, bool > do_serialize(Archive &ar, T &v)
main function for dispatching serialization for a given pair of archive and value types
Definition serialization.h:69
tools::wallet2::message_signature_result_t result
Definition signature.cpp:62
a descriptor for dispatching serialize
Definition serialization.h:58
boost::false_type type
Definition serialization.h:58