56#include <boost/endian/conversion.hpp>
66namespace serialization {
78 std::is_same<std::uint8_t, unsigned char>::value,
79 "byte_io: std::uint8_t must alias unsigned char on this "
80 "target — the stream adapters' reinterpret_cast<char*> "
81 "bridge depends on it. See the comment immediately above "
82 "this assertion for the rationale."
90using boost::endian::load_little_s32;
91using boost::endian::load_little_s64;
92using boost::endian::load_little_u16;
93using boost::endian::load_little_u32;
94using boost::endian::load_little_u64;
95using boost::endian::store_little_s32;
96using boost::endian::store_little_s64;
97using boost::endian::store_little_u16;
98using boost::endian::store_little_u32;
99using boost::endian::store_little_u64;
120inline void write_u8(std::ostream& out, uint8_t v) {
123 out.write(
reinterpret_cast<const char*
>(buf), 1);
126inline bool read_u8(std::istream& in, uint8_t& v) {
128 if (!in.read(
reinterpret_cast<char*
>(buf), 1))
return false;
129 if (in.gcount() != 1)
return false;
136 store_little_u16(buf, v);
137 out.write(
reinterpret_cast<const char*
>(buf), 2);
142 if (!in.read(
reinterpret_cast<char*
>(buf), 2))
return false;
143 if (in.gcount() != 2)
return false;
144 v = load_little_u16(buf);
150 store_little_u32(buf, v);
151 out.write(
reinterpret_cast<const char*
>(buf), 4);
156 if (!in.read(
reinterpret_cast<char*
>(buf), 4))
return false;
157 if (in.gcount() != 4)
return false;
158 v = load_little_u32(buf);
164 store_little_u64(buf, v);
165 out.write(
reinterpret_cast<const char*
>(buf), 8);
170 if (!in.read(
reinterpret_cast<char*
>(buf), 8))
return false;
171 if (in.gcount() != 8)
return false;
172 v = load_little_u64(buf);
178 store_little_s32(buf, v);
179 out.write(
reinterpret_cast<const char*
>(buf), 4);
184 if (!in.read(
reinterpret_cast<char*
>(buf), 4))
return false;
185 if (in.gcount() != 4)
return false;
186 v = load_little_s32(buf);
192 store_little_s64(buf, v);
193 out.write(
reinterpret_cast<const char*
>(buf), 8);
198 if (!in.read(
reinterpret_cast<char*
>(buf), 8))
return false;
199 if (in.gcount() != 8)
return false;
200 v = load_little_s64(buf);
bool read_u32_le(std::istream &in, uint32_t &v)
Definition byte_io.hpp:154
bool read_u64_le(std::istream &in, uint64_t &v)
Definition byte_io.hpp:168
bool read_i64_le(std::istream &in, int64_t &v)
Definition byte_io.hpp:196
bool read_i32_le(std::istream &in, int32_t &v)
Definition byte_io.hpp:182
void write_i64_le(std::ostream &out, int64_t v)
Definition byte_io.hpp:190
void write_u32_le(std::ostream &out, uint32_t v)
Definition byte_io.hpp:148
uint8_t load_little_u8(const uint8_t *p)
Definition byte_io.hpp:106
void store_little_u8(uint8_t *p, uint8_t v)
Definition byte_io.hpp:102
void write_u8(std::ostream &out, uint8_t v)
Definition byte_io.hpp:120
void write_u16_le(std::ostream &out, uint16_t v)
Definition byte_io.hpp:134
bool read_u8(std::istream &in, uint8_t &v)
Definition byte_io.hpp:126
void write_u64_le(std::ostream &out, uint64_t v)
Definition byte_io.hpp:162
bool read_u16_le(std::istream &in, uint16_t &v)
Definition byte_io.hpp:140
void write_i32_le(std::ostream &out, int32_t v)
Definition byte_io.hpp:176
Definition deserialization.hpp:40
Definition AbstractCLibBmiAdapter.hpp:6