Files
2026-06-22 11:49:35 +02:00

53 lines
955 B
C++

/* -----------------------------------------------------------------------------
GSFramework
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */
#ifndef __NENDIAN__
#define __NENDIAN__
#include "ntypes.h"
namespace GS {
namespace Endian {
enum Config
{
Undefined = 0,
Big,
Little,
Motorola = Big,
Intel = Little
};
/// Swap bytes in memory.
void SwapBytes(void *, size_t);
/// Return the current host memory configuration.
Config GetHostConfiguration();
/// Convert a memory block to the host configuration.
void *ToHost(void *, size_t, Config = Big);
/// Convert a value to the host configuration.
template <class T> T ToHost(const T &v, Config cfg = Big)
{
if (GetHostConfiguration() == cfg)
return v;
T host_value = v;
SwapBytes(&host_value, sizeof(T));
return host_value;
}
} // Endian
} // GS
#endif //__NENDIAN__