EHS/include/ehs/Data.h
Karutoh bcd71cf2b5
All checks were successful
Build & Release / Windows-AMD64-Build (push) Successful in 1m8s
Build & Release / Linux-AMD64-Build (push) Successful in 1m30s
Build & Release / Linux-AARCH64-Build (push) Successful in 3m21s
Adjusted workflow.
2024-02-05 22:25:30 -08:00

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;
}
};
}