45 lines
1.0 KiB
C
45 lines
1.0 KiB
C
|
#pragma once
|
||
|
|
||
|
#include "EHS.h"
|
||
|
#include "Serializer.h"
|
||
|
|
||
|
namespace ehs
|
||
|
{
|
||
|
class Data
|
||
|
{
|
||
|
public:
|
||
|
template<typename T>
|
||
|
static void SwapEndianness(T* value)
|
||
|
{
|
||
|
Byte tmp = 0;
|
||
|
for (UInt_64 i = 0; i < sizeof(T) / 2; ++i)
|
||
|
{
|
||
|
tmp = ((Byte*)value)[i];
|
||
|
((Byte*)value)[i] = ((Byte*)value)[sizeof(T) - i - 1];
|
||
|
((Byte*)value)[sizeof(T) - i - 1] = tmp;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
template<typename T>
|
||
|
static Array<T> SwapEndianness(const T* const array, const UInt_64 size)
|
||
|
{
|
||
|
Array<T> result(size);
|
||
|
|
||
|
for (UInt_64 i = size; i; --i)
|
||
|
result[size - i] = array[i - 1];
|
||
|
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
template<typename N>
|
||
|
static Serializer<N> SwapEndianness(const Serializer<N>& data)
|
||
|
{
|
||
|
Serializer<N> result(data.Size());
|
||
|
|
||
|
for (N i = 0; i < data.Size(); ++i)
|
||
|
result[i] = data[data.Size() - i - 1];
|
||
|
|
||
|
return result;
|
||
|
}
|
||
|
};
|
||
|
}
|