OLD | NEW |
1 #ifndef _ENDIAN_H | 1 #ifndef _ENDIAN_H |
2 #define _ENDIAN_H | 2 #define _ENDIAN_H |
3 | 3 |
4 #include <features.h> | 4 #include <features.h> |
5 | 5 |
6 #define __LITTLE_ENDIAN 1234 | 6 #define __LITTLE_ENDIAN 1234 |
7 #define __BIG_ENDIAN 4321 | 7 #define __BIG_ENDIAN 4321 |
8 #define __PDP_ENDIAN 3412 | 8 #define __PDP_ENDIAN 3412 |
9 | 9 |
10 #if defined(__GNUC__) && defined(__BYTE_ORDER__) | 10 #if defined(__GNUC__) && defined(__BYTE_ORDER__) |
11 #define __BYTE_ORDER __BYTE_ORDER__ | 11 #define __BYTE_ORDER __BYTE_ORDER__ |
12 #else | 12 #else |
13 #include <bits/endian.h> | 13 #include <bits/endian.h> |
14 #endif | 14 #endif |
15 | 15 |
16 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) | 16 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) |
17 | 17 |
18 #define BIG_ENDIAN __BIG_ENDIAN | 18 #define BIG_ENDIAN __BIG_ENDIAN |
19 #define LITTLE_ENDIAN __LITTLE_ENDIAN | 19 #define LITTLE_ENDIAN __LITTLE_ENDIAN |
20 #define PDP_ENDIAN __PDP_ENDIAN | 20 #define PDP_ENDIAN __PDP_ENDIAN |
21 #define BYTE_ORDER __BYTE_ORDER | 21 #define BYTE_ORDER __BYTE_ORDER |
22 | 22 |
23 #include <stdint.h> | 23 #include <stdint.h> |
24 | 24 |
25 static __inline uint16_t __bswap16(uint16_t __x) | 25 static __inline uint16_t __bswap16(uint16_t __x) { |
26 { | 26 return __x << 8 | __x >> 8; |
27 » return __x<<8 | __x>>8; | |
28 } | 27 } |
29 | 28 |
30 static __inline uint32_t __bswap32(uint32_t __x) | 29 static __inline uint32_t __bswap32(uint32_t __x) { |
31 { | 30 return __x >> 24 | ((__x >> 8) & 0xff00) | ((__x << 8) & 0xff0000) | |
32 » return __x>>24 | ((__x>>8)&0xff00) | ((__x<<8)&0xff0000) | __x<<24; | 31 __x << 24; |
33 } | 32 } |
34 | 33 |
35 static __inline uint64_t __bswap64(uint64_t __x) | 34 static __inline uint64_t __bswap64(uint64_t __x) { |
36 { | 35 return ((uint64_t)__bswap32(__x)) << 32 | __bswap32(__x >> 32); |
37 » return ((uint64_t)__bswap32(__x))<<32 | __bswap32(__x>>32); | |
38 } | 36 } |
39 | 37 |
40 #if __BYTE_ORDER == __LITTLE_ENDIAN | 38 #if __BYTE_ORDER == __LITTLE_ENDIAN |
41 #define htobe16(x) __bswap16(x) | 39 #define htobe16(x) __bswap16(x) |
42 #define be16toh(x) __bswap16(x) | 40 #define be16toh(x) __bswap16(x) |
43 #define betoh16(x) __bswap16(x) | 41 #define betoh16(x) __bswap16(x) |
44 #define htobe32(x) __bswap32(x) | 42 #define htobe32(x) __bswap32(x) |
45 #define be32toh(x) __bswap32(x) | 43 #define be32toh(x) __bswap32(x) |
46 #define betoh32(x) __bswap32(x) | 44 #define betoh32(x) __bswap32(x) |
47 #define htobe64(x) __bswap64(x) | 45 #define htobe64(x) __bswap64(x) |
(...skipping 25 matching lines...) Expand all Loading... |
73 #define le32toh(x) __bswap32(x) | 71 #define le32toh(x) __bswap32(x) |
74 #define letoh32(x) __bswap32(x) | 72 #define letoh32(x) __bswap32(x) |
75 #define htole64(x) __bswap64(x) | 73 #define htole64(x) __bswap64(x) |
76 #define le64toh(x) __bswap64(x) | 74 #define le64toh(x) __bswap64(x) |
77 #define letoh64(x) __bswap64(x) | 75 #define letoh64(x) __bswap64(x) |
78 #endif | 76 #endif |
79 | 77 |
80 #endif | 78 #endif |
81 | 79 |
82 #endif | 80 #endif |
OLD | NEW |