27 #ifndef SERIALIZETOVECTOR 28 #define SERIALIZETOVECTOR 36 #include <type_traits> 38 #include <cereal/types/vector.hpp> 39 #include <boost/throw_exception.hpp> 124 std::stringstream os;
131 oa(CEREAL_NVP(
object));
135 charVector.assign(std::istreambuf_iterator<char>(os), std::istreambuf_iterator<char>());
148 std::stringstream os;
155 oa(CEREAL_NVP(
object));
158 result.assign(std::istreambuf_iterator<char>(os), std::istreambuf_iterator<char>());
174 if (!std::is_pod<T>::value)
176 BOOST_THROW_EXCEPTION(std::invalid_argument(
"object is not POD"));
179 auto begin =
reinterpret_cast<char const*
>(&object);
180 auto end = std::next(begin, static_cast<int>(
sizeof(T)));
182 std::copy(begin, end, std::back_inserter(charVector));
195 if (!std::is_pod<T>::value)
197 BOOST_THROW_EXCEPTION(std::invalid_argument(
"object is not POD"));
200 auto len =
sizeof(T);
203 auto begin =
reinterpret_cast<char const*
>(&object);
204 auto end = std::next(begin, static_cast<int>(len));
205 std::copy(begin, end, std::back_inserter(result));
221 std::stringstream os;
223 if (!
object.SerializeToOstream(&os))
225 BOOST_THROW_EXCEPTION(std::runtime_error(
"failed to serialize protocol buffer"));
229 charVector.assign(std::istreambuf_iterator<char>(os), std::istreambuf_iterator<char>());
242 std::stringstream os;
244 if (!
object.SerializeToOstream(&os))
246 BOOST_THROW_EXCEPTION(std::runtime_error(
"failed to serialize protocol buffer"));
249 result.assign(std::istreambuf_iterator<char>(os), std::istreambuf_iterator<char>());
269 std::stringstream is;
270 std::copy(charVector.begin(), charVector.end(), std::ostream_iterator<char>(is));
278 ia(CEREAL_NVP(
object));
295 if (!std::is_pod<T>::value)
297 BOOST_THROW_EXCEPTION(std::invalid_argument(
"object is not POD"));
300 if (charVector.size() !=
sizeof(T))
302 BOOST_THROW_EXCEPTION(std::invalid_argument(
"buffer to object size mismatch"));
306 memcpy(&
object, charVector.data(), charVector.size());
321 std::stringstream is;
322 std::copy(charVector.begin(), charVector.end(), std::ostream_iterator<char>(is));
325 if (!
object.ParseFromIstream(&is))
327 BOOST_THROW_EXCEPTION(std::runtime_error(
"failed to deserialize to protocol buffer"));
346 template <
typename T,
typename OA = archives::out_port_bin_t>
362 template <
typename T,
typename OA = archives::out_port_bin_t>
376 template <
typename T,
typename IA = archives::in_port_bin_t>
385 #endif // #define SERIALIZETOVECTOR char_vector_t operator()(const T &object) const
Function operator.
Definition: SerializeToVector.h:122
cereal::PortableBinaryInputArchive in_port_bin_t
Typedef to input portable binary archive.
Definition: SerializeToVector.h:88
cereal::BinaryInputArchive in_bin_t
Typedef to input binary archive.
Definition: SerializeToVector.h:90
cereal::JSONOutputArchive out_json_t
Typedef to output json archive.
Definition: SerializeToVector.h:82
Out archive placeholder struct for serializing POD objects.
Definition: SerializeToVector.h:57
raw_iarchive in_raw_t
Typedef to input raw archive.
Definition: SerializeToVector.h:96
protobuf_iarchive in_protobuf_t
Typedef to input using Google protocol buffers.
Definition: SerializeToVector.h:98
Serialization to char vector implementation.
Definition: SerializeToVector.h:113
std::vector< char > char_vector_t
Typedef for char vector.
Definition: SerializeToVector.h:49
The core_lib namespace.
Definition: AsioDefines.h:59
void operator()(const T &object, char_vector_t &result) const
Function operator.
Definition: SerializeToVector.h:193
Out archive placeholder struct for serializing Google protocol buffers.
Definition: SerializeToVector.h:67
T ToObject(const char_vector_t &charVector)
Deserialize a char vector into a corresponding object.
Definition: SerializeToVector.h:377
char_vector_t operator()(const T &object) const
Function operator.
Definition: SerializeToVector.h:172
void operator()(const T &object, char_vector_t &result) const
Function operator.
Definition: SerializeToVector.h:146
T operator()(const char_vector_t &charVector) const
Function operator.
Definition: SerializeToVector.h:267
T operator()(const char_vector_t &charVector) const
Function operator.
Definition: SerializeToVector.h:293
cereal::BinaryOutputArchive out_bin_t
Typedef to output binary archive.
Definition: SerializeToVector.h:78
File containing declaration of DLL import/export control defines.
void operator()(const T &object, char_vector_t &result) const
Function operator.
Definition: SerializeToVector.h:240
File containing includes for Cereal serialization.
In archive placeholder struct for serializing Google protocol buffers.
Definition: SerializeToVector.h:62
cereal::XMLInputArchive in_xml_t
Typedef to input xml archive.
Definition: SerializeToVector.h:92
Deserialization to object implementation.
Definition: SerializeToVector.h:260
cereal::XMLOutputArchive out_xml_t
Typedef to output xml archive.
Definition: SerializeToVector.h:80
cereal::PortableBinaryOutputArchive out_port_bin_t
Typedef to output portable binary archive.
Definition: SerializeToVector.h:76
protobuf_oarchive out_protobuf_t
Typedef to output using Google protocol buffers.
Definition: SerializeToVector.h:86
In archive placeholder struct for serializing POD objects.
Definition: SerializeToVector.h:52
char_vector_t ToCharVector(const T &object)
Serialize an object into a char vector.
Definition: SerializeToVector.h:347
cereal::JSONInputArchive in_json_t
Typedef to input json archive.
Definition: SerializeToVector.h:94
T operator()(const char_vector_t &charVector) const
Function operator.
Definition: SerializeToVector.h:319
char_vector_t operator()(const T &object) const
Function operator.
Definition: SerializeToVector.h:219
raw_oarchive out_raw_t
Typedef to output raw archive.
Definition: SerializeToVector.h:84