mirror of
git://git.musl-libc.org/musl
synced 2024-12-18 21:05:13 +00:00
fb247fafa0
while musl itself requires a c99 compiler, some applications insist on being compiled with c89 compilers, and use of "inline" in the headers was breaking them. much of this had been avoided already by just skipping the inline keyword in pre-c99 compilers or modes, but this new unified solution is cleaner and may/should result in better code generation in the default gcc configuration.
30 lines
567 B
C
30 lines
567 B
C
#ifndef _BYTESWAP_H
|
|
#define _BYTESWAP_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#if __STDC_VERSION__ >= 199901L || defined(__cplusplus)
|
|
#define __inline inline
|
|
#endif
|
|
|
|
static __inline uint16_t __bswap_16(uint16_t __x)
|
|
{
|
|
return __x<<8 | __x>>8;
|
|
}
|
|
|
|
static __inline uint32_t __bswap_32(uint32_t __x)
|
|
{
|
|
return __x>>24 | __x>>8&0xff00 | __x<<8&0xff0000 | __x<<24;
|
|
}
|
|
|
|
static __inline uint64_t __bswap_64(uint64_t __x)
|
|
{
|
|
return __bswap_32(__x)+0ULL<<32 | __bswap_32(__x>>32);
|
|
}
|
|
|
|
#define bswap_16(x) __bswap_16(x)
|
|
#define bswap_32(x) __bswap_32(x)
|
|
#define bswap_64(x) __bswap_64(x)
|
|
|
|
#endif
|