5 #ifndef BITCOIN_COMPAT_ENDIAN_H 6 #define BITCOIN_COMPAT_ENDIAN_H 8 #if defined(HAVE_CONFIG_H) 9 #include <config/bitcoin-config.h> 16 #if defined(HAVE_ENDIAN_H) 18 #elif defined(HAVE_SYS_ENDIAN_H) 19 #include <sys/endian.h> 27 #define HAVE_DECL_HTOBE16 1 30 #define HAVE_DECL_HTOLE16 1 33 #define HAVE_DECL_BE16TOH 1 36 #define HAVE_DECL_LE16TOH 1 40 #define HAVE_DECL_HTOBE32 1 43 #define HAVE_DECL_HTOLE32 1 46 #define HAVE_DECL_BE32TOH 1 49 #define HAVE_DECL_LE32TOH 1 53 #define HAVE_DECL_HTOBE64 1 56 #define HAVE_DECL_HTOLE64 1 59 #define HAVE_DECL_BE64TOH 1 62 #define HAVE_DECL_LE64TOH 1 65 #endif // HAVE_CONFIG_H 67 #if defined(WORDS_BIGENDIAN) 69 #if HAVE_DECL_HTOBE16 == 0 70 inline uint16_t
htobe16(uint16_t host_16bits) {
73 #endif // HAVE_DECL_HTOBE16 75 #if HAVE_DECL_HTOLE16 == 0 76 inline uint16_t
htole16(uint16_t host_16bits) {
79 #endif // HAVE_DECL_HTOLE16 81 #if HAVE_DECL_BE16TOH == 0 82 inline uint16_t
be16toh(uint16_t big_endian_16bits) {
83 return big_endian_16bits;
85 #endif // HAVE_DECL_BE16TOH 87 #if HAVE_DECL_LE16TOH == 0 88 inline uint16_t
le16toh(uint16_t little_endian_16bits) {
89 return bswap_16(little_endian_16bits);
91 #endif // HAVE_DECL_LE16TOH 93 #if HAVE_DECL_HTOBE32 == 0 94 inline uint32_t
htobe32(uint32_t host_32bits) {
97 #endif // HAVE_DECL_HTOBE32 99 #if HAVE_DECL_HTOLE32 == 0 100 inline uint32_t
htole32(uint32_t host_32bits) {
103 #endif // HAVE_DECL_HTOLE32 105 #if HAVE_DECL_BE32TOH == 0 106 inline uint32_t
be32toh(uint32_t big_endian_32bits) {
107 return big_endian_32bits;
109 #endif // HAVE_DECL_BE32TOH 111 #if HAVE_DECL_LE32TOH == 0 112 inline uint32_t
le32toh(uint32_t little_endian_32bits) {
113 return bswap_32(little_endian_32bits);
115 #endif // HAVE_DECL_LE32TOH 117 #if HAVE_DECL_HTOBE64 == 0 118 inline uint64_t
htobe64(uint64_t host_64bits) {
121 #endif // HAVE_DECL_HTOBE64 123 #if HAVE_DECL_HTOLE64 == 0 124 inline uint64_t
htole64(uint64_t host_64bits) {
127 #endif // HAVE_DECL_HTOLE64 129 #if HAVE_DECL_BE64TOH == 0 130 inline uint64_t
be64toh(uint64_t big_endian_64bits) {
131 return big_endian_64bits;
133 #endif // HAVE_DECL_BE64TOH 135 #if HAVE_DECL_LE64TOH == 0 136 inline uint64_t
le64toh(uint64_t little_endian_64bits) {
137 return bswap_64(little_endian_64bits);
139 #endif // HAVE_DECL_LE64TOH 141 #else // WORDS_BIGENDIAN 143 #if HAVE_DECL_HTOBE16 == 0 144 inline uint16_t
htobe16(uint16_t host_16bits) {
147 #endif // HAVE_DECL_HTOBE16 149 #if HAVE_DECL_HTOLE16 == 0 150 inline uint16_t
htole16(uint16_t host_16bits) {
153 #endif // HAVE_DECL_HTOLE16 155 #if HAVE_DECL_BE16TOH == 0 156 inline uint16_t
be16toh(uint16_t big_endian_16bits) {
159 #endif // HAVE_DECL_BE16TOH 161 #if HAVE_DECL_LE16TOH == 0 162 inline uint16_t
le16toh(uint16_t little_endian_16bits) {
163 return little_endian_16bits;
165 #endif // HAVE_DECL_LE16TOH 167 #if HAVE_DECL_HTOBE32 == 0 168 inline uint32_t
htobe32(uint32_t host_32bits) {
171 #endif // HAVE_DECL_HTOBE32 173 #if HAVE_DECL_HTOLE32 == 0 174 inline uint32_t
htole32(uint32_t host_32bits) {
177 #endif // HAVE_DECL_HTOLE32 179 #if HAVE_DECL_BE32TOH == 0 180 inline uint32_t
be32toh(uint32_t big_endian_32bits) {
183 #endif // HAVE_DECL_BE32TOH 185 #if HAVE_DECL_LE32TOH == 0 186 inline uint32_t
le32toh(uint32_t little_endian_32bits) {
187 return little_endian_32bits;
189 #endif // HAVE_DECL_LE32TOH 191 #if HAVE_DECL_HTOBE64 == 0 192 inline uint64_t
htobe64(uint64_t host_64bits) {
195 #endif // HAVE_DECL_HTOBE64 197 #if HAVE_DECL_HTOLE64 == 0 198 inline uint64_t
htole64(uint64_t host_64bits) {
201 #endif // HAVE_DECL_HTOLE64 203 #if HAVE_DECL_BE64TOH == 0 204 inline uint64_t
be64toh(uint64_t big_endian_64bits) {
207 #endif // HAVE_DECL_BE64TOH 209 #if HAVE_DECL_LE64TOH == 0 210 inline uint64_t
le64toh(uint64_t little_endian_64bits) {
211 return little_endian_64bits;
213 #endif // HAVE_DECL_LE64TOH 215 #endif // WORDS_BIGENDIAN 217 #endif // BITCOIN_COMPAT_ENDIAN_H uint64_t htobe64(uint64_t host_64bits)
uint32_t be32toh(uint32_t big_endian_32bits)
uint32_t htole32(uint32_t host_32bits)
uint32_t bswap_32(uint32_t x)
uint32_t htobe32(uint32_t host_32bits)
uint64_t be64toh(uint64_t big_endian_64bits)
uint16_t htobe16(uint16_t host_16bits)
uint16_t bswap_16(uint16_t x)
uint16_t le16toh(uint16_t little_endian_16bits)
uint16_t htole16(uint16_t host_16bits)
uint64_t le64toh(uint64_t little_endian_64bits)
uint64_t bswap_64(uint64_t x)
uint16_t be16toh(uint16_t big_endian_16bits)
uint64_t htole64(uint64_t host_64bits)
uint32_t le32toh(uint32_t little_endian_32bits)