7#if defined(__cpp_lib_endian) && __cpp_lib_endian >= 201907L 
   10#ifndef BS_LITTLE_ENDIAN 
   12#if defined(__BYTE_ORDER__) 
   13#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) 
   14#define BS_LITTLE_ENDIAN true 
   15#elif (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) 
   16#define BS_LITTLE_ENDIAN false 
   18#error "Unknown machine byteorder endianness detected. Need to manually define BS_LITTLE_ENDIAN." 
   21#elif defined(__GLIBC__) 
   23#if (__BYTE_ORDER == __LITTLE_ENDIAN) 
   24#define BS_LITTLE_ENDIAN true 
   25#elif (__BYTE_ORDER == __BIG_ENDIAN) 
   26#define BS_LITTLE_ENDIAN false 
   28#error "Unknown machine byteorder endianness detected. Need to manually define BS_LITTLE_ENDIAN." 
   31#elif defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN) 
   32#define BS_LITTLE_ENDIAN true 
   33#elif defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN) 
   34#define BS_LITTLE_ENDIAN false 
   36#elif defined(__sparc) || defined(__sparc__) || defined(_POWER) || defined(__powerpc__) || defined(__ppc__) || defined(__hpux) || defined(__hppa) || defined(_MIPSEB) || defined(_POWER) || defined(__s390__) 
   37#define BS_LITTLE_ENDIAN false 
   38#elif defined(__i386__) || defined(__alpha__) || defined(__ia64) || defined(__ia64__) || defined(_M_IX86) || defined(_M_IA64) || defined(_M_ALPHA) || defined(__amd64) || defined(__amd64__) || defined(_M_AMD64) || defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || defined(__bfin__) 
   39#define BS_LITTLE_ENDIAN true 
   40#elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64)) 
   41#define BS_LITTLE_ENDIAN true 
   43#error "Unknown machine byteorder endianness detected. Need to manually define BS_LITTLE_ENDIAN." 
   57#ifdef BS_LITTLE_ENDIAN 
   64        return std::endian::native == std::endian::little;
 
 
   70        const uint32_t first = (value << 24) & 0xFF000000;
 
   71        const uint32_t second = (value << 8) & 0x00FF0000;
 
   72        const uint32_t third = (value >> 8) & 0x0000FF00;
 
   73        const uint32_t fourth = (value >> 24) & 0x000000FF;
 
   75        return first | second | third | fourth;
 
 
   87            return _byteswap_ulong(value);
 
   88#elif defined(__linux__) 
   89            return __builtin_bswap32(value);
 
 
BS_CONSTEXPR uint32_t to_big_endian32(uint32_t value)
Definition endian.h:104
 
BS_CONSTEXPR uint32_t endian_swap32(uint32_t value)
Definition endian.h:78
 
constexpr bool little_endian()
Definition endian.h:55
 
constexpr uint32_t to_big_endian32_const(uint32_t value)
Definition endian.h:96
 
constexpr uint32_t endian_swap32_const(uint32_t value)
Definition endian.h:68