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>
74template<
typename F,
typename S>
92template <
class Archive,
class T>
98 static bool serialize(Archive &
ar,
T &v, boost::false_type, boost::true_type, A
a) {
103 static bool serialize(Archive &
ar,
T &v, boost::true_type, boost::false_type, A
a) {
107 static bool serialize(Archive &
ar,
T &v, boost::false_type, boost::false_type, boost::false_type) {
109 return v.do_serialize(
ar);
111 static bool serialize(Archive &
ar,
T &v, boost::false_type, boost::false_type, boost::true_type) {
123template <
class Archive,
class T>
126 return ::serializer<Archive, T>::serialize(
ar, v);
128template <
class Archive>
141#define BLOB_SERIALIZER(T) \
143 struct is_blob_type<T> { \
144 typedef boost::true_type type; \
151#define FREE_SERIALIZER(T) \
153 struct has_free_serializer<T> { \
154 typedef boost::true_type type; \
161#define VARIANT_TAG(Archive, Type, Tag) \
163 struct variant_serialization_traits<Archive<W>, Type> { \
164 static inline typename Archive<W>::variant_tag_type get_tag() { \
175#define BEGIN_SERIALIZE() \
176 template <bool W, template <bool> class Archive> \
177 bool do_serialize(Archive<W> &ar) {
184#define BEGIN_SERIALIZE_OBJECT() \
185 template <bool W, template <bool> class Archive> \
186 bool do_serialize(Archive<W> &ar) { \
188 bool r = do_serialize_object(ar); \
192 template <bool W, template <bool> class Archive> \
193 bool do_serialize_object(Archive<W> &ar){
197#define PREPARE_CUSTOM_VECTOR_SERIALIZATION(size, vec) \
198 ::serialization::detail::prepare_custom_vector_serialization(size, vec, typename Archive<W>::is_saving())
202#define PREPARE_CUSTOM_DEQUE_SERIALIZATION(size, vec) \
203 ::serialization::detail::prepare_custom_deque_serialization(size, vec, typename Archive<W>::is_saving())
208#define END_SERIALIZE() \
218 bool r = ::do_serialize(ar, f); \
219 if (!r || !ar.good()) return false; \
226#define FIELD_N(t, f) \
229 bool r = ::do_serialize(ar, f); \
230 if (!r || !ar.good()) return false; \
240 bool r = ::do_serialize(ar, f); \
241 if (!r || !ar.good()) return false; \
250 bool r = ::do_serialize(ar, f); \
251 if (!r || !ar.good()) return false; \
257#define VARINT_FIELD(f) \
260 ar.serialize_varint(f); \
261 if (!ar.good()) return false; \
268#define VARINT_FIELD_N(t, f) \
271 ar.serialize_varint(f); \
272 if (!ar.good()) return false; \
277#define MAGIC_FIELD(m) \
278 std::string magic = m; \
281 ar.serialize_blob((void*)magic.data(), magic.size()); \
282 if (!ar.good()) return false; \
283 if (magic != m) return false; \
288#define VERSION_FIELD(v) \
289 uint32_t version = v; \
292 ar.serialize_varint(version); \
293 if (!ar.good()) return false; \
309 template <
typename T>
314 template <
typename T>
320 template <
typename T>
325 template <
typename T>
335 template<
class Archive>
346 template<
class Archive>
362 template<
class Archive>
372 template <
class Archive,
class T>
383 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
declaration and default definition for the functions used the API
Definition: expect.cpp:34
bool do_check_stream_state(Archive &ar, boost::mpl::bool_< true >, bool noeof)
Definition: serialization.h:336
void prepare_custom_deque_serialization(size_t size, std::deque< T > &vec, const boost::mpl::bool_< true > &)
Definition: serialization.h:321
void prepare_custom_vector_serialization(size_t size, std::vector< T > &vec, const boost::mpl::bool_< true > &)
Definition: serialization.h:310
Definition: binary_utils.h:36
bool serialize_noeof(Archive &ar, T &v)
Definition: serialization.h:384
bool check_stream_state(Archive &ar, bool noeof=false)
Definition: serialization.h:363
bool serialize(Archive &ar, T &v)
Definition: serialization.h:373
const GenericPointer< typename T::ValueType > T2 T::AllocatorType & a
Definition: pointer.h:1124
bool do_serialize(Archive &ar, T &v)
just calls the serialize function defined for ar and v...
Definition: serialization.h:124
tools::wallet2::message_signature_result_t result
Definition: signature.cpp:62
bool good() const noexcept
Definition: binary_archive.h:99
bool eof() const noexcept
If implementing as std::istream, reset stream error state after peek() call.
Definition: binary_archive.h:103
void serialize_blob(void *buf, size_t len, const char *delimiter="")
Definition: binary_archive.h:130
void serialize_int(T &v)
Definition: binary_archive.h:107
a descriptor for dispatching serialize
Definition: serialization.h:65
boost::true_type type
Definition: serialization.h:65
boost::true_type type
Definition: serialization.h:75
boost::true_type type
Definition: serialization.h:77
a descriptor for dispatching serialize
Definition: serialization.h:72
boost::false_type type
Definition: serialization.h:72
a descriptor for dispatching serialize
Definition: serialization.h:58
boost::false_type type
Definition: serialization.h:58
... wouldn't a class be better?
Definition: serialization.h:93
static bool serialize(Archive &ar, T &v, boost::false_type, boost::false_type, boost::false_type)
Definition: serialization.h:107
static void serialize_custom(Archive &ar, T &v, boost::true_type)
Definition: serialization.h:115
static bool serialize(Archive &ar, T &v, boost::false_type, boost::true_type, A a)
Definition: serialization.h:98
static bool serialize(Archive &ar, T &v, boost::false_type, boost::false_type, boost::true_type)
Definition: serialization.h:111
static bool serialize(Archive &ar, T &v)
Definition: serialization.h:94
static bool serialize(Archive &ar, T &v, boost::true_type, boost::false_type, A a)
Definition: serialization.h:103