mirror of
https://github.com/badaix/snapcast.git
synced 2025-04-29 10:17:16 +02:00
47 lines
690 B
C++
47 lines
690 B
C++
#ifndef ENDIAN_HPP
|
|
#define ENDIAN_HPP
|
|
|
|
#include <cstdint>
|
|
|
|
#ifdef IS_BIG_ENDIAN
|
|
#define SWAP_16(x) (__builtin_bswap16(x))
|
|
#define SWAP_32(x) (__builtin_bswap32(x))
|
|
#define SWAP_64(x) (__builtin_bswap64(x))
|
|
#else
|
|
#define SWAP_16(x) x
|
|
#define SWAP_32(x) x
|
|
#define SWAP_64(x) x
|
|
#endif
|
|
|
|
namespace endian
|
|
{
|
|
|
|
template <typename T>
|
|
T swap(const T&);
|
|
|
|
template <>
|
|
inline int8_t swap(const int8_t& val)
|
|
{
|
|
return val;
|
|
}
|
|
|
|
template <>
|
|
inline int16_t swap(const int16_t& val)
|
|
{
|
|
return SWAP_16(val);
|
|
}
|
|
|
|
template <>
|
|
inline int32_t swap(const int32_t& val)
|
|
{
|
|
return SWAP_32(val);
|
|
}
|
|
|
|
template <>
|
|
inline int64_t swap(const int64_t& val)
|
|
{
|
|
return SWAP_64(val);
|
|
}
|
|
} // namespace endian
|
|
|
|
#endif
|