|
|
1.1 ! root 1: // ! 2: // nono ! 3: // Copyright (C) 2018 [email protected] ! 4: // ! 5: ! 6: #pragma once ! 7: ! 8: #if !defined(_LITTLE_ENDIAN) ! 9: # define _LITTLE_ENDIAN 1234 ! 10: # define _BIG_ENDIAN 4321 ! 11: #endif ! 12: ! 13: #if !defined(_BYTE_ORDER) ! 14: # if defined(WORDS_BIGENDIAN) ! 15: # define _BYTE_ORDER _BIG_ENDIAN ! 16: # else ! 17: # define _BYTE_ORDER _LITTLE_ENDIAN ! 18: # endif ! 19: #endif ! 20: ! 21: static inline uint16 be16toh(uint16 val) ! 22: { ! 23: #if _BYTE_ORDER == _BIG_ENDIAN ! 24: return val; ! 25: #elif defined(HAVE___BUILTIN_BSWAP16) ! 26: return __builtin_bswap16(val); ! 27: #else ! 28: #error no be16toh available ! 29: #endif ! 30: } ! 31: ! 32: static inline uint32 be32toh(uint32 val) ! 33: { ! 34: #if _BYTE_ORDER == _BIG_ENDIAN ! 35: return val; ! 36: #elif defined(HAVE___BUILTIN_BSWAP32) ! 37: return __builtin_bswap32(val); ! 38: #else ! 39: #error no be32toh available ! 40: #endif ! 41: } ! 42: ! 43: static inline uint16 htobe16(uint16 val) ! 44: { ! 45: #if _BYTE_ORDER == _BIG_ENDIAN ! 46: return val; ! 47: #elif defined(HAVE___BUILTIN_BSWAP16) ! 48: return __builtin_bswap16(val); ! 49: #else ! 50: #error no htobe16 available ! 51: #endif ! 52: } ! 53: ! 54: static inline uint32 htobe32(uint32 val) ! 55: { ! 56: #if _BYTE_ORDER == _BIG_ENDIAN ! 57: return val; ! 58: #elif defined(HAVE___BUILTIN_BSWAP32) ! 59: return __builtin_bswap32(val); ! 60: #else ! 61: #error no htobe32 available ! 62: #endif ! 63: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.