39 #include <boost/type_traits/make_unsigned.hpp> 58 template <class Stream,
bool IsSaving>
70 void tag(
const char *) { }
77 stream_type &
stream() {
return stream_; }
102 stream_type::streampos 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 tools::read_varint(it(stream_), it(), v);
172 assert(stream_.tellg() <= eof_pos_);
173 return eof_pos_ - stream_.tellg();
187 serialize_uint(
static_cast<typename boost::make_unsigned<T>::type
>(v));
192 for (
size_t i = 0; i <
sizeof(
T); i++) {
193 stream_.put((
char)(v & 0xff));
194 if (1 <
sizeof(
T)) v >>= 8;
200 stream_.write((
char *)buf, len);
206 serialize_uvarint(*(
typename boost::make_unsigned<T>::type *)(&v));
212 typedef std::ostreambuf_iterator<char> it;
void write_variant_tag(variant_tag_type t)
Definition: binary_archive.h:226
void end_array()
Definition: binary_archive.h:159
void serialize_varint(T &v)
Definition: binary_archive.h:140
void serialize_uvarint(T &v)
Definition: binary_archive.h:146
binary_archive(stream_type &s)
Definition: binary_archive.h:101
const uint32_t T[512]
Definition: groestl_tables.h:33
PUSH_WARNINGS
Definition: hash-ops.h:53
uint8_t variant_tag_type
Definition: binary_archive.h:65
void serialize_blob(void *buf, size_t len, const char *delimiter="")
Definition: binary_archive.h:198
void read_variant_tag(variant_tag_type &t)
Definition: binary_archive.h:164
stream_type & stream()
Definition: binary_archive.h:77
binary_archive_base< Stream, IsSaving > base_type
Definition: binary_archive.h:62
void serialize_int(T v)
Definition: binary_archive.h:185
binary_archive(stream_type &s)
Definition: binary_archive.h:182
boost::mpl::bool_< IsSaving > is_saving
Definition: binary_archive.h:63
void tag(const char *)
Definition: binary_archive.h:70
void serialize_blob(void *buf, size_t len, const char *delimiter="")
Definition: binary_archive.h:134
void begin_array(size_t &s)
Definition: binary_archive.h:152
void serialize_uint(T v)
Definition: binary_archive.h:190
provides the implementation of varint's
stream_type & stream_
Definition: binary_archive.h:80
void begin_array()
Definition: binary_archive.h:157
void begin_string(const char *delimiter="\)
Definition: binary_archive.h:223
void begin_variant()
Definition: binary_archive.h:73
void end_string(const char *delimiter)
Definition: binary_archive.h:162
void begin_object()
Definition: binary_archive.h:71
void serialize_uvarint(T &v)
Definition: binary_archive.h:210
void serialize_varint(T &v)
Definition: binary_archive.h:204
void end_object()
Definition: binary_archive.h:72
std::streamoff eof_pos_
Definition: binary_archive.h:176
void end_variant()
Definition: binary_archive.h:74
int b
Definition: base.py:1
#define false
Definition: stdbool.h:37
void begin_array(size_t s)
Definition: binary_archive.h:215
base for the binary archive type
Definition: binary_archive.h:59
void end_array()
Definition: binary_archive.h:221
void end_string(const char *delimiter="\)
Definition: binary_archive.h:224
binary_archive_base(stream_type &s)
Definition: binary_archive.h:67
DISABLE_VS_WARNINGS(4244 4345 4503) using namespace crypto
size_t remaining_bytes()
Definition: binary_archive.h:168
void delimit_array()
Definition: binary_archive.h:220
void delimit_array()
Definition: binary_archive.h:158
void serialize_uint(T &v, size_t width=sizeof(T))
serializes an unsigned integer
Definition: binary_archive.h:119
void begin_array()
Definition: binary_archive.h:219
Stream stream_type
Definition: binary_archive.h:61
Definition: binary_archive.h:94
#define true
Definition: stdbool.h:36
#define s(x, c)
Definition: aesb.c:46
void serialize_int(T &v)
Definition: binary_archive.h:109
void begin_string(const char *delimiter)
Definition: binary_archive.h:161