45#ifndef LASS_GUARDIAN_OF_INCLUSION_NUM_ENDIANNESS_INL
46#define LASS_GUARDIAN_OF_INCLUSION_NUM_ENDIANNESS_INL
58template <
size_t numOfBytes>
62 static void revert(
void* ioIn)
64 std::reverse(
static_cast<Tuint8*
>(ioIn),
static_cast<Tuint8*
>(ioIn) + numOfBytes);
71 static void revert(
void* )
79 static void revert(
void* )
87 static void revert(
void* ioIn)
89 Tuint16& temp = *
static_cast<Tuint16*
>(ioIn);
90 temp =
static_cast<Tuint16
>(((temp & 0x00ff) << 8) | (temp >> 8));
97 static void revert(
void* ioIn)
99 Tuint32& temp = *
static_cast<Tuint32*
>(ioIn);
100 temp = ((temp & 0x000000ff) << 24) | ((temp & 0x0000ff00) << 8) |
101 ((temp & 0x00ff0000) >> 8) | (temp >> 24);
107template <
size_t numOfBytes, Endianness outEndian, Endianness inEndian>
110 inline static void cast(
void* ioIn)
112 Revertor<numOfBytes>::revert(ioIn);
116template <
size_t numOfBytes, Endianness endian>
117struct EndianCaster<numOfBytes, endian, endian>
119 inline static void cast(
void* )
128template <Endianness outEndian, Endianness inEndian,
typename T>
129inline T endianCast(T iIn)
131 impl::EndianCaster<
sizeof(T), outEndian, inEndian>::cast(
reinterpret_cast<void*
>(&iIn));
136inline T fixEndianness(T iIn, Endianness iEndianness)
138 return iEndianness == systemEndian ? iIn : endianCast<bigEndian, littleEndian>(iIn);
numeric types and traits.
Library for Assembled Shared Sources.