39 #include <boost/type_traits/make_unsigned.hpp> 58 template <class Stream,
bool IsSaving>
70 void tag(
const char *) { }
102 stream_type::pos_type pos = stream_.tellg();
103 stream_.seekg(0, std::ios_base::end);
104 eof_pos_ = stream_.tellg();
111 serialize_uint(*(
typename boost::make_unsigned<T>::type *)&v);
123 for (
size_t i = 0; i < width; i++) {
127 T b = (
unsigned char)c;
136 stream_.read((
char *)
buf, len);
141 stream_.read((
char *)str.c_str(), str.size());
147 serialize_uvarint(*(
typename boost::make_unsigned<T>::type *)(&v));
153 typedef std::istreambuf_iterator<char> it;
154 if (tools::read_varint(it(stream_), it(), v) < 0)
155 stream_.setstate(std::ios_base::failbit);
178 assert(stream_.tellg() <= eof_pos_);
179 return eof_pos_ - stream_.tellg();
193 serialize_uint(
static_cast<typename boost::make_unsigned<T>::type
>(v));
198 for (
size_t i = 0; i <
sizeof(
T); i++) {
199 stream_.put((
char)(v & 0xff));
200 if (1 <
sizeof(
T)) v >>= 8;
206 stream_.write((
char *)
buf, len);
211 stream_.write((
char *)str.c_str(), str.size());
217 serialize_uvarint(*(
typename boost::make_unsigned<T>::type *)(&v));
223 typedef std::ostreambuf_iterator<char> it;
void serialize_string(std::string str, const char *delimiter="")
void write_variant_tag(variant_tag_type t)
void serialize_varint(T &v)
void serialize_uvarint(T &v)
binary_archive(stream_type &s)
void serialize_blob(void *buf, size_t len, const char *delimiter="")
void read_variant_tag(variant_tag_type &t)
binary_archive_base< Stream, IsSaving > base_type
binary_archive(stream_type &s)
boost::mpl::bool_< IsSaving > is_saving
void serialize_blob(void *buf, size_t len, const char *delimiter="")
void begin_array(size_t &s)
provides the implementation of varint's
void begin_string(const char *delimiter="\)
void end_string(const char *delimiter)
void serialize_uvarint(T &v)
void serialize_varint(T &v)
void begin_array(size_t s)
base for the binary archive type
void serialize_string(std::string str, const char *delimiter="")
void end_string(const char *delimiter="\)
binary_archive_base(stream_type &s)
DISABLE_VS_WARNINGS(4244 4345 4503) using namespace crypto
void serialize_uint(T &v, size_t width=sizeof(T))
serializes an unsigned integer
void begin_string(const char *delimiter)