aura  0.1
All Data Structures Functions Variables Modules Pages
endian.h
1 #ifndef ENDIAN_H
2 #define ENDIAN_H
3 
4 enum aura_endianness
5 {
6  AURA_ENDIAN_LITTLE=0,
7  AURA_ENDIAN_BIG,
8 };
9 
10 
11 #define __swap16(value) \
12  ((((uint16_t)((value) & 0x00FF)) << 8) | \
13  (((uint16_t)((value) & 0xFF00)) >> 8))
14 
15 #define __swap32(value) \
16  ((((uint32_t)((value) & 0x000000FF)) << 24) | \
17  (((uint32_t)((value) & 0x0000FF00)) << 8) | \
18  (((uint32_t)((value) & 0x00FF0000)) >> 8) | \
19  (((uint32_t)((value) & 0xFF000000)) >> 24))
20 
21 #define __swap64(value) \
22  (((((uint64_t)value)<<56) & 0xFF00000000000000ULL) | \
23  ((((uint64_t)value)<<40) & 0x00FF000000000000ULL) | \
24  ((((uint64_t)value)<<24) & 0x0000FF0000000000ULL) | \
25  ((((uint64_t)value)<< 8) & 0x000000FF00000000ULL) | \
26  ((((uint64_t)value)>> 8) & 0x00000000FF000000ULL) | \
27  ((((uint64_t)value)>>24) & 0x0000000000FF0000ULL) | \
28  ((((uint64_t)value)>>40) & 0x000000000000FF00ULL) | \
29  ((((uint64_t)value)>>56) & 0x00000000000000FFULL))
30 
31 #endif