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);
142 serialize_uvarint(*(
typename boost::make_unsigned<T>::type *)(&v));
148 typedef std::istreambuf_iterator<char> it;
149 if (tools::read_varint(it(stream_), it(), v) < 0)
150 stream_.setstate(std::ios_base::failbit);
173 assert(stream_.tellg() <= eof_pos_);
174 return eof_pos_ - stream_.tellg();
188 serialize_uint(
static_cast<typename boost::make_unsigned<T>::type
>(v));
193 for (
size_t i = 0; i <
sizeof(
T); i++) {
194 stream_.put((
char)(v & 0xff));
195 if (1 <
sizeof(
T)) v >>= 8;
201 stream_.write((
char *)buf, len);
207 serialize_uvarint(*(
typename boost::make_unsigned<T>::type *)(&v));
213 typedef std::ostreambuf_iterator<char> it;
#define s(x, c)
Definition: aesb.c:47
const uint32_t T[512]
Definition: groestl_tables.h:37
PUSH_WARNINGS
Definition: hash-ops.h:54
int b
Definition: base.py:1
#define true
Definition: stdbool.h:37
#define false
Definition: stdbool.h:38
void begin_array(size_t &s)
Definition: binary_archive.h:153
void end_string(const char *delimiter)
Definition: binary_archive.h:163
std::streamoff eof_pos_
Definition: binary_archive.h:177
void delimit_array()
Definition: binary_archive.h:159
void serialize_varint(T &v)
Definition: binary_archive.h:140
size_t remaining_bytes()
Definition: binary_archive.h:169
void serialize_blob(void *buf, size_t len, const char *delimiter="")
Definition: binary_archive.h:134
void serialize_uint(T &v, size_t width=sizeof(T))
serializes an unsigned integer
Definition: binary_archive.h:119
binary_archive(stream_type &s)
Definition: binary_archive.h:101
void read_variant_tag(variant_tag_type &t)
Definition: binary_archive.h:165
void serialize_uvarint(T &v)
Definition: binary_archive.h:146
void serialize_int(T &v)
Definition: binary_archive.h:109
void end_array()
Definition: binary_archive.h:160
void begin_string(const char *delimiter)
Definition: binary_archive.h:162
void begin_array()
Definition: binary_archive.h:158
void end_string(const char *delimiter="\"")
Definition: binary_archive.h:225
void serialize_blob(void *buf, size_t len, const char *delimiter="")
Definition: binary_archive.h:199
void serialize_uvarint(T &v)
Definition: binary_archive.h:211
void serialize_int(T v)
Definition: binary_archive.h:186
binary_archive(stream_type &s)
Definition: binary_archive.h:183
void begin_string(const char *delimiter="\"")
Definition: binary_archive.h:224
void write_variant_tag(variant_tag_type t)
Definition: binary_archive.h:227
void delimit_array()
Definition: binary_archive.h:221
void end_array()
Definition: binary_archive.h:222
void serialize_varint(T &v)
Definition: binary_archive.h:205
void begin_array(size_t s)
Definition: binary_archive.h:216
void serialize_uint(T v)
Definition: binary_archive.h:191
void begin_array()
Definition: binary_archive.h:220
base for the binary archive type
Definition: binary_archive.h:60
void begin_object()
Definition: binary_archive.h:71
void end_object()
Definition: binary_archive.h:72
stream_type & stream()
Definition: binary_archive.h:77
boost::mpl::bool_< IsSaving > is_saving
Definition: binary_archive.h:63
Stream stream_type
Definition: binary_archive.h:61
void tag(const char *)
Definition: binary_archive.h:70
binary_archive_base< Stream, IsSaving > base_type
Definition: binary_archive.h:62
uint8_t variant_tag_type
Definition: binary_archive.h:65
void end_variant()
Definition: binary_archive.h:74
binary_archive_base(stream_type &s)
Definition: binary_archive.h:67
stream_type & stream_
Definition: binary_archive.h:80
void begin_variant()
Definition: binary_archive.h:73
Definition: binary_archive.h:94
DISABLE_VS_WARNINGS(4244 4345 4503) using namespace crypto
provides the implementation of varint's