#pragma once #include namespace sp { bool IsSystemBigEndian(); /** * \brief Serialize value to (network byte order) big endian */ template void ToNetwork(T& value) {} template <> void ToNetwork(std::uint16_t& value); template <> void ToNetwork(std::uint32_t& value); template <> void ToNetwork(std::uint64_t& value); /** * \brief Deserialize value from (network byte order) big endian */ template void FromNetwork(T& value) {} template <> void FromNetwork(std::uint16_t& value); template <> void FromNetwork(std::uint32_t& value); template <> void FromNetwork(std::uint64_t& value); /** * \brief Swap bytes if the value is any kind of integer */ template void TrySwapBytes(T& value) {} template <> void TrySwapBytes(std::uint16_t& value); template <> void TrySwapBytes(std::uint32_t& value); template <> void TrySwapBytes(std::uint64_t& value); } // namespace sp