12#ifndef O2_FRAMEWORK_ENDIAN_H_
13#define O2_FRAMEWORK_ENDIAN_H_
20#include <machine/endian.h>
26#define swap16_ be16toh
27#define swap32_ be32toh
32#define O2_HOST_BYTE_ORDER __BYTE_ORDER
33#define O2_BIG_ENDIAN __BIG_ENDIAN
34#define O2_LITTLE_ENDIAN __LITTLE_ENDIAN
36inline uint16_t
doSwap(std::same_as<uint16_t>
auto x)
41inline uint32_t
doSwap(std::same_as<uint32_t>
auto x)
46inline uint64_t
doSwap(std::same_as<uint64_t>
auto x)
54 auto tdest =
static_cast<T*
>(dest);
55 auto tsrc =
static_cast<T*
>(
source);
56 for (
auto i = 0;
i <
size; ++
i) {
57 tdest[
i] = doSwap<T>(tsrc[
i]);
67 return doSwapCopy_<uint16_t>(dest,
source,
size);
69 return doSwapCopy_<uint32_t>(dest,
source,
size);
71 return doSwapCopy_<uint64_t>(dest,
source,
size);
void doSwapCopy_(void *dest, void *source, int size) noexcept
void swapCopy(unsigned char *dest, char *source, int size, int typeSize) noexcept
uint16_t doSwap(std::same_as< uint16_t > auto x)
GLsizei GLsizei GLchar * source