Ticket #9208: bswap.h

File bswap.h, 662 bytes (added by Kim Nguyen, 15 years ago)

Missing bswap.h file

Line 
1
2static inline const uint16_t bswap_16(uint16_t x)
3{
4 x= (x>>8) | (x<<8);
5 return x;
6}
7
8static inline const uint32_t bswap_32(uint32_t x)
9{
10 x= ((x<<8)&0xFF00FF00) | ((x>>8)&0x00FF00FF);
11 x= (x>>16) | (x<<16);
12 return x;
13}
14
15static inline uint64_t const bswap_64(uint64_t x)
16{
17
18 union {
19 uint64_t ll;
20 uint32_t l[2];
21 } w, r;
22 w.ll = x;
23 r.l[0] = bswap_32 (w.l[1]);
24 r.l[1] = bswap_32 (w.l[0]);
25 return r.ll;
26
27}
28
29static inline double bswap_dbl(double x)
30{
31 union {
32 uint32_t l[2];
33 double d;
34 } w, r;
35 w.d = x;
36 r.l[0] = bswap_32(w.l[1]);
37 r.l[1] = bswap_32(w.l[0]);
38 return r.d;
39}