Skip to content

Commit c77f470

Browse files
authored
Merge pull request #150 from phcoder/inline
retro_endianness: Replace swap macros with inline functions
2 parents e0ee203 + 0c07cce commit c77f470

1 file changed

Lines changed: 37 additions & 28 deletions

File tree

include/retro_endianness.h

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -31,38 +31,47 @@
3131
#define SWAP16 _byteswap_ushort
3232
#define SWAP32 _byteswap_ulong
3333
#else
34-
#define SWAP16(x) ((uint16_t)( \
35-
(((uint16_t)(x) & 0x00ff) << 8) | \
36-
(((uint16_t)(x) & 0xff00) >> 8) \
37-
))
38-
#define SWAP32(x) ((uint32_t)( \
39-
(((uint32_t)(x) & 0x000000ff) << 24) | \
40-
(((uint32_t)(x) & 0x0000ff00) << 8) | \
41-
(((uint32_t)(x) & 0x00ff0000) >> 8) | \
42-
(((uint32_t)(x) & 0xff000000) >> 24) \
43-
))
34+
static INLINE uint16_t SWAP16(uint16_t x)
35+
{
36+
return ((x & 0x00ff) << 8) |
37+
((x & 0xff00) >> 8);
38+
}
39+
40+
static INLINE uint32_t SWAP32(uint32_t x)
41+
{
42+
return ((x & 0x000000ff) << 24) |
43+
((x & 0x0000ff00) << 8) |
44+
((x & 0x00ff0000) >> 8) |
45+
((x & 0xff000000) >> 24);
46+
}
47+
4448
#endif
4549

4650
#if defined(_MSC_VER) && _MSC_VER <= 1200
47-
#define SWAP64(val) \
48-
((((uint64_t)(val) & 0x00000000000000ff) << 56) \
49-
| (((uint64_t)(val) & 0x000000000000ff00) << 40) \
50-
| (((uint64_t)(val) & 0x0000000000ff0000) << 24) \
51-
| (((uint64_t)(val) & 0x00000000ff000000) << 8) \
52-
| (((uint64_t)(val) & 0x000000ff00000000) >> 8) \
53-
| (((uint64_t)(val) & 0x0000ff0000000000) >> 24) \
54-
| (((uint64_t)(val) & 0x00ff000000000000) >> 40) \
55-
| (((uint64_t)(val) & 0xff00000000000000) >> 56))
51+
static INLINE uint64_t SWAP64(uint64_t val)
52+
{
53+
return
54+
((val & 0x00000000000000ff) << 56)
55+
| ((val & 0x000000000000ff00) << 40)
56+
| ((val & 0x0000000000ff0000) << 24)
57+
| ((val & 0x00000000ff000000) << 8)
58+
| ((val & 0x000000ff00000000) >> 8)
59+
| ((val & 0x0000ff0000000000) >> 24)
60+
| ((val & 0x00ff000000000000) >> 40)
61+
| ((val & 0xff00000000000000) >> 56);
62+
}
5663
#else
57-
#define SWAP64(val) \
58-
((((uint64_t)(val) & 0x00000000000000ffULL) << 56) \
59-
| (((uint64_t)(val) & 0x000000000000ff00ULL) << 40) \
60-
| (((uint64_t)(val) & 0x0000000000ff0000ULL) << 24) \
61-
| (((uint64_t)(val) & 0x00000000ff000000ULL) << 8) \
62-
| (((uint64_t)(val) & 0x000000ff00000000ULL) >> 8) \
63-
| (((uint64_t)(val) & 0x0000ff0000000000ULL) >> 24) \
64-
| (((uint64_t)(val) & 0x00ff000000000000ULL) >> 40) \
65-
| (((uint64_t)(val) & 0xff00000000000000ULL) >> 56))
64+
static INLINE uint64_t SWAP64(uint64_t val)
65+
{
66+
return ((val & 0x00000000000000ffULL) << 56)
67+
| ((val & 0x000000000000ff00ULL) << 40)
68+
| ((val & 0x0000000000ff0000ULL) << 24)
69+
| ((val & 0x00000000ff000000ULL) << 8)
70+
| ((val & 0x000000ff00000000ULL) >> 8)
71+
| ((val & 0x0000ff0000000000ULL) >> 24)
72+
| ((val & 0x00ff000000000000ULL) >> 40)
73+
| ((val & 0xff00000000000000ULL) >> 56);
74+
}
6675
#endif
6776

6877

0 commit comments

Comments
 (0)