mirror of
https://github.com/monero-project/monero.git
synced 2025-08-10 15:10:21 -04:00
serialization: add deque serialization
This commit is contained in:
parent
fa54b20584
commit
493fad8053
3 changed files with 70 additions and 2 deletions
|
@ -41,6 +41,7 @@
|
|||
|
||||
#pragma once
|
||||
#include <vector>
|
||||
#include <deque>
|
||||
#include <list>
|
||||
#include <string>
|
||||
#include <boost/type_traits/is_integral.hpp>
|
||||
|
@ -198,6 +199,11 @@ inline bool do_serialize(Archive &ar, bool &v)
|
|||
#define PREPARE_CUSTOM_VECTOR_SERIALIZATION(size, vec) \
|
||||
::serialization::detail::prepare_custom_vector_serialization(size, vec, typename Archive<W>::is_saving())
|
||||
|
||||
/*! \macro PREPARE_CUSTOM_DEQUE_SERIALIZATION
|
||||
*/
|
||||
#define PREPARE_CUSTOM_DEQUE_SERIALIZATION(size, vec) \
|
||||
::serialization::detail::prepare_custom_deque_serialization(size, vec, typename Archive<W>::is_saving())
|
||||
|
||||
/*! \macro END_SERIALIZE
|
||||
* \brief self-explanatory
|
||||
*/
|
||||
|
@ -292,6 +298,17 @@ namespace serialization {
|
|||
vec.resize(size);
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void prepare_custom_deque_serialization(size_t size, std::deque<T>& vec, const boost::mpl::bool_<true>& /*is_saving*/)
|
||||
{
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
void prepare_custom_deque_serialization(size_t size, std::deque<T>& vec, const boost::mpl::bool_<false>& /*is_saving*/)
|
||||
{
|
||||
vec.resize(size);
|
||||
}
|
||||
|
||||
/*! \fn do_check_stream_state
|
||||
*
|
||||
* \brief self explanatory
|
||||
|
|
|
@ -37,6 +37,11 @@ bool do_serialize(Archive<false> &ar, std::vector<T> &v);
|
|||
template <template <bool> class Archive, class T>
|
||||
bool do_serialize(Archive<true> &ar, std::vector<T> &v);
|
||||
|
||||
template <template <bool> class Archive, class T>
|
||||
bool do_serialize(Archive<false> &ar, std::deque<T> &v);
|
||||
template <template <bool> class Archive, class T>
|
||||
bool do_serialize(Archive<true> &ar, std::deque<T> &v);
|
||||
|
||||
namespace serialization
|
||||
{
|
||||
namespace detail
|
||||
|
@ -64,7 +69,7 @@ namespace serialization
|
|||
}
|
||||
|
||||
template <template <bool> class Archive, class T>
|
||||
bool do_serialize(Archive<false> &ar, std::vector<T> &v)
|
||||
bool do_serialize_vd(Archive<false> &ar, T &v)
|
||||
{
|
||||
size_t cnt;
|
||||
ar.begin_array(cnt);
|
||||
|
@ -93,7 +98,7 @@ bool do_serialize(Archive<false> &ar, std::vector<T> &v)
|
|||
}
|
||||
|
||||
template <template <bool> class Archive, class T>
|
||||
bool do_serialize(Archive<true> &ar, std::vector<T> &v)
|
||||
bool do_serialize_vd(Archive<true> &ar, T &v)
|
||||
{
|
||||
size_t cnt = v.size();
|
||||
ar.begin_array(cnt);
|
||||
|
@ -110,3 +115,13 @@ bool do_serialize(Archive<true> &ar, std::vector<T> &v)
|
|||
ar.end_array();
|
||||
return true;
|
||||
}
|
||||
|
||||
template <template <bool> class Archive, class T>
|
||||
bool do_serialize(Archive<false> &ar, std::vector<T> &v) { return do_serialize_vd(ar, v); }
|
||||
template <template <bool> class Archive, class T>
|
||||
bool do_serialize(Archive<true> &ar, std::vector<T> &v) { return do_serialize_vd(ar, v); }
|
||||
|
||||
template <template <bool> class Archive, class T>
|
||||
bool do_serialize(Archive<false> &ar, std::deque<T> &v) { return do_serialize_vd(ar, v); }
|
||||
template <template <bool> class Archive, class T>
|
||||
bool do_serialize(Archive<true> &ar, std::deque<T> &v) { return do_serialize_vd(ar, v); }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue