8#ifndef ABLASTR_MSG_LOGGER_SERIALIZATION_H_
9#define ABLASTR_MSG_LOGGER_SERIALIZATION_H_
31 std::enable_if_t<std::is_trivially_copyable_v<T> || std::is_same_v<T, std::string>,
bool> =
true>
32 void put_in(
const T &val, std::vector<char> &vec)
34 if constexpr (std::is_same<T, std::string>())
36 const char *c_str = val.c_str();
37 const auto length =
static_cast<int>(val.size());
40 std::copy(c_str, c_str + length, std::back_inserter(vec));
44 const auto *ptr_val =
reinterpret_cast<const char *
>(&val);
45 std::copy(ptr_val, ptr_val +
sizeof(T), std::back_inserter(vec));
60 void put_in_vec(
const std::vector<T> &val, std::vector<char> &vec)
62 put_in(
static_cast<int>(val.size()), vec);
63 for (
const auto &el : val) {
79 std::enable_if_t<std::is_trivially_copyable_v<T> || std::is_same_v<T, std::string>,
bool> =
true>
80 T
get_out(std::vector<char>::const_iterator &it)
82 if constexpr (std::is_same<T, std::string>())
85 auto str = std::string{it, it + length};
92 auto temp = std::array<char,
sizeof(T)>{};
93 std::copy(it, it +
sizeof(T), temp.begin());
96 std::memcpy(&res, temp.data(),
sizeof(T));
112 template <
typename T>
117 std::vector<T> res(length);
118 for (
int i = 0; i < length; ++i) {
Definition Serialization.H:20
void put_in_vec(const std::vector< T > &val, std::vector< char > &vec)
Definition Serialization.H:60
T get_out(std::vector< char >::const_iterator &it)
Definition Serialization.H:80
void put_in(const T &val, std::vector< char > &vec)
Definition Serialization.H:32
std::vector< T > get_out_vec(std::vector< char >::const_iterator &it)
Definition Serialization.H:113