44 return std::is_integral<T>::value && std::is_unsigned<T>::value &&
sizeof(
T) > 1;
47 template <
typename Archive,
class T>
48 typename std::enable_if<!use_container_varint<T>(),
bool>::type
54 template<
typename Archive,
typename T>
55 typename std::enable_if<use_container_varint<T>(),
bool>::type
58 static constexpr const bool previously_varint = std::is_same<uint64_t, T>() || std::is_same<uint32_t, T>();
60 if (!previously_varint &&
ar.varint_bug_backward_compatibility_enabled() && !
typename Archive::is_saving())
62 ar.serialize_varint(e);
67 template<
typename... C>
70 auto do_reserve(C &c, std::size_t N, std::size_t B) ->
decltype(c.reserve(N))
72 using T =
typename C::value_type;
74 static constexpr std::size_t max_compression_ratio =
77 (std::is_same<T, char>::value || std::is_same<T, unsigned char>::value) ? 1:
82 B = std::max(std::size_t(1), B);
83 if (std::numeric_limits<std::size_t>::max() / max_compression_ratio <= B)
84 B = std::numeric_limits<std::size_t>::max();
86 B *= max_compression_ratio;
88 return c.reserve(std::min(N, B));
93template <
template <
bool>
class Archive,
typename C>
103 if (
ar.remaining_bytes() < cnt) {
110 for (
size_t i = 0; i < cnt; i++) {
113 typename C::value_type e;
124template <
template <
bool>
class Archive,
typename C>
127 size_t cnt = v.size();
129 for (
auto i = v.begin(); i != v.end(); ++i)
binary_archive< false > ar
Definition cold-outputs.cpp:54
bool do_serialize_container(Archive< false > &ar, C &v)
Definition container.h:94
bool do_serialize(Archive< false > &ar, std::vector< T > &v)
Definition containers.h:108
declaration and default definition for the functions used the API
Definition expect.cpp:34
void do_add(std::vector< T > &c, T &&e)
Definition containers.h:90
void do_reserve(const C &...)
Reserve space for N elements if applicable for container.
Definition container.h:68
constexpr bool use_container_varint() noexcept
Definition container.h:42
std::enable_if<!use_container_varint< T >(), bool >::type serialize_container_element(Archive &ar, T &e)
Definition container.h:49
Definition binary_utils.h:36
a descriptor for dispatching serialize
Definition serialization.h:58