2024-02-05 22:25:30 -08:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "EHS.h"
|
|
|
|
#include "Serializer.h"
|
|
|
|
|
|
|
|
namespace ehs
|
|
|
|
{
|
2024-07-24 01:36:20 -07:00
|
|
|
class EHS_LIB_IO Data
|
2024-02-05 22:25:30 -08:00
|
|
|
{
|
|
|
|
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;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
}
|