9 #ifndef GU_SERIALIZABLE_HPP
10 #define GU_SERIALIZABLE_HPP
12 #include "gu_types.hpp"
13 #include "gu_throw.hpp"
14 #include "gu_assert.hpp"
29 return my_serial_size();
43 return my_serialize_to (buf, size);
52 size_t const old_size (v.size());
57 v.resize (new_size, 0);
59 catch (std::length_error& l)
61 gu_throw_error(EMSGSIZE) <<
"length_error: " << l.what();
65 gu_throw_error(ENOMEM) <<
"could not resize to " << new_size
86 virtual ssize_t my_serial_size ()
const = 0;
88 virtual ssize_t my_serialize_to (
void* buf, ssize_t size)
const = 0;
91 static inline std::vector<byte_t>&
92 operator << (std::vector<byte_t>& out,
const Serializable& s)
98 #if 0 // seems to be a pointless idea
105 static ssize_t serial_size (
const byte_t*
const buf, ssize_t
const size)
108 return DS::my_serial_size (buf, size);
112 ssize_t deserialize_from (
const byte_t*
const buf, ssize_t
const size)
115 return my_deserialize_from (buf, size);
118 ssize_t deserialize_from (
const std::vector<byte_t>& in,
size_t const offset)
120 return deserialize_from (&in[offset], in.size() - offset);
130 virtual ssize_t my_deserialize_from (
const byte_t* buf, ssize_t size) = 0;
ssize_t serialize_to(std::vector< byte_t > &v) const
Definition: gu_serializable.hpp:50
ssize_t serial_size() const
Definition: gu_serializable.hpp:27
ssize_t serialize_to(void *const buf, ssize_t const size) const
Definition: gu_serializable.hpp:41
Definition: gu_serializable.hpp:22