22 using std::runtime_error::runtime_error;
25 enum class ErrorCode {
32 InputArchive(InputStream& is);
33 InputArchive(StreamBuffer& buf);
38 static_assert(std::is_integral<T>::value ==
true,
"only integral types are supported");
39 char* ptr =
reinterpret_cast<
char*>(&t);
40 load_binary(ptr,
sizeof(T));
44 void load_binary(
unsigned char* data, std::size_t len);
45 void load_binary(
char* data, std::size_t len);
47 std::size_t remaining_bytes();
50 ErrorCode error_code()
const;
51 void fail(ErrorCode error_code);
54 StreamBuffer* m_stream_buffer;
55 ErrorCode m_error_code = ErrorCode::Ok;
67 using std::runtime_error::runtime_error;
70 OutputArchive(OutputStream& os);
71 OutputArchive(StreamBuffer& buf);
76 static_assert(std::is_integral<T>::value ==
true,
"only integral types are supported");
77 const char* ptr =
reinterpret_cast<
const char*>(&t);
78 save_binary(ptr,
sizeof(T));
82 void save_binary(
const unsigned char* data, std::size_t len);
83 void save_binary(
const char* data, std::size_t len);
86 StreamBuffer* m_stream_buffer;