16 #include <nn/pia/common/common_Definitions.h>
34 static inline uint16_t Swap16(uint16_t v)
36 return (v << 8) | (v >> 8);
39 static inline uint32_t Swap32(uint32_t v)
41 uint32_t w = ((v & 0xff00ff00) >> 8) | ((v & 0x00ff00ff) << 8);
42 return (w >> 16) | (w << 16);
45 static inline uint64_t Swap64(uint64_t v)
47 uint64_t w = ((v & 0xff00ff00ff00ff00) >> 8) | ((v & 0x00ff00ff00ff00ff) << 8);
48 uint64_t x = ((w & 0xffff0000ffff0000) >> 16) | ((w & 0x0000ffff0000ffff) << 16);
49 return (x >> 32) | (x << 32);
112 #if NN_PIA_ENDIAN_BIG
129 #if NN_PIA_ENDIAN_BIG
146 #if NN_PIA_ENDIAN_BIG
158 pData[0] =
static_cast<uint8_t
>((a >> 56) & 0xff);
159 pData[1] =
static_cast<uint8_t
>((a >> 48) & 0xff);
160 pData[2] =
static_cast<uint8_t
>((a >> 40) & 0xff);
161 pData[3] =
static_cast<uint8_t
>((a >> 32) & 0xff);
162 pData[4] =
static_cast<uint8_t
>((a >> 24) & 0xff);
163 pData[5] =
static_cast<uint8_t
>((a >> 16) & 0xff);
164 pData[6] =
static_cast<uint8_t
>((a >> 8) & 0xff);
165 pData[7] =
static_cast<uint8_t
>((a >> 0) & 0xff);
168 static inline uint64_t deserializeU64(
const uint8_t* pData)
171 tmp |=
static_cast<uint64_t
>(pData[0]) << 56;
172 tmp |=
static_cast<uint64_t
>(pData[1]) << 48;
173 tmp |=
static_cast<uint64_t
>(pData[2]) << 40;
174 tmp |=
static_cast<uint64_t
>(pData[3]) << 32;
175 tmp |=
static_cast<uint64_t
>(pData[4]) << 24;
176 tmp |=
static_cast<uint64_t
>(pData[5]) << 16;
177 tmp |=
static_cast<uint64_t
>(pData[6]) << 8;
178 tmp |=
static_cast<uint64_t
>(pData[7]) << 0;
182 static inline void serializeU32(uint8_t* pData, uint32_t a)
184 pData[0] =
static_cast<uint8_t
>((a & 0xff000000) >> 24);
185 pData[1] =
static_cast<uint8_t
>((a & 0x00ff0000) >> 16);
186 pData[2] =
static_cast<uint8_t
>((a & 0x0000ff00) >> 8);
187 pData[3] =
static_cast<uint8_t
>((a & 0x000000ff) >> 0);
190 static inline uint32_t deserializeU32(
const uint8_t* pData)
192 return (static_cast<uint32_t>(pData[0]) << 24) |
193 (
static_cast<uint32_t
>(pData[1]) << 16) |
194 (
static_cast<uint32_t
>(pData[2]) << 8) |
195 (
static_cast<uint32_t
>(pData[3]) << 0);
198 static inline void serializeU16(uint8_t* pData, uint16_t a)
200 pData[0] =
static_cast<uint8_t
>((a & 0xff00) >> 8);
201 pData[1] =
static_cast<uint8_t
>((a & 0x00ff) >> 0);
204 static inline uint16_t deserializeU16(
const uint8_t* pData)
206 return (static_cast<uint16_t>(pData[0]) << 8) |
207 (
static_cast<uint16_t
>(pData[1]) << 0);
211 static inline void serializeU8(uint8_t* pData, uint8_t a)
216 static inline uint8_t deserializeU8(
const uint8_t* pData)
228 template <u
int32_t Size>
229 static inline void Swap(
void* pTo,
const void* cpFrom);
236 inline void ByteOrder::Swap<1>(
void* pTo,
const void* cpFrom)
238 *
reinterpret_cast<uint8_t*
>(pTo) = *reinterpret_cast<const uint8_t*>(cpFrom);
242 inline void ByteOrder::Swap<2>(
void* pTo,
const void* cpFrom)
244 *
reinterpret_cast<uint16_t*
>(pTo) = Swap16(*reinterpret_cast<const uint16_t*>(cpFrom));
248 inline void ByteOrder::Swap<4>(
void* pTo,
const void* cpFrom)
250 *
reinterpret_cast<uint32_t*
>(pTo) = Swap32(*reinterpret_cast<const uint32_t*>(cpFrom));
254 inline void ByteOrder::Swap<8>(
void* pTo,
const void* cpFrom)
256 reinterpret_cast<uint32_t*
>(pTo)[0] = Swap32(reinterpret_cast<const uint32_t*>(cpFrom)[1]);
257 reinterpret_cast<uint32_t*
>(pTo)[1] = Swap32(reinterpret_cast<const uint32_t*>(cpFrom)[0]);