1#ifndef ARK_COMPILER_SERIALIZATION_INTEGERSERIALIZER_HPP
2#define ARK_COMPILER_SERIALIZATION_INTEGERSERIALIZER_HPP
12 constexpr auto mask =
static_cast<decltype(number)
>(0xff);
14 for (std::size_t i = 0; i <
sizeof(
decltype(number)); ++i)
15 out.push_back(
static_cast<uint8_t
>((number & (mask << (8 * i))) >> (8 * i)));
20 constexpr auto pad =
sizeof(
decltype(number)) - 1;
21 constexpr auto mask =
static_cast<decltype(number)
>(0xff);
23 for (std::size_t i = 0; i <
sizeof(
decltype(number)); ++i)
25 const auto shift = 8 * (pad - i);
26 out.push_back(
static_cast<uint8_t
>((number & (mask << shift)) >> shift));
32 constexpr auto mask =
static_cast<decltype(number)
>(0xff);
33 out.push_back(
static_cast<uint8_t
>(number & mask));
34 out.push_back(
static_cast<uint8_t
>((number & (mask << 8)) >> 8));
39 constexpr auto mask =
static_cast<decltype(number)
>(0xff);
40 out.push_back(
static_cast<uint8_t
>((number & (mask << 8)) >> 8));
41 out.push_back(
static_cast<uint8_t
>(number & mask));
44 template <std::
integral T>
45 T
deserializeLE(std::vector<uint8_t>::const_iterator begin, std::vector<uint8_t>::const_iterator end)
47 constexpr std::size_t length =
sizeof(T);
49 for (std::size_t i = 0; i < length && begin != end; ++i, ++begin)
50 result +=
static_cast<T
>(*begin) << (8 * i);
55 template <std::
integral T>
56 T
deserializeBE(std::vector<uint8_t>::const_iterator begin, std::vector<uint8_t>::const_iterator end)
58 constexpr std::size_t length =
sizeof(T);
60 for (std::size_t i = 0; i < length && begin != end; ++i, ++begin)
61 result +=
static_cast<T
>(*begin) << (8 * (length - i - 1));
void serializeOn2BytesToVecLE(std::integral auto number, std::vector< uint8_t > &out)
void serializeToVecBE(std::integral auto number, std::vector< uint8_t > &out)
T deserializeBE(std::vector< uint8_t >::const_iterator begin, std::vector< uint8_t >::const_iterator end)
void serializeToVecLE(std::integral auto number, std::vector< uint8_t > &out)
void serializeOn2BytesToVecBE(std::integral auto number, std::vector< uint8_t > &out)
T deserializeLE(std::vector< uint8_t >::const_iterator begin, std::vector< uint8_t >::const_iterator end)