Cygwin: define byteswap.h inlines as macros
The bswap_* "functions" are macros in glibc, so they may be tested for by the preprocessor (e.g. #ifdef bswap_16). Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
This commit is contained in:
		| @@ -16,23 +16,27 @@ extern "C" { | |||||||
| #endif | #endif | ||||||
|  |  | ||||||
| static __inline unsigned short | static __inline unsigned short | ||||||
| bswap_16 (unsigned short __x) | __bswap_16 (unsigned short __x) | ||||||
| { | { | ||||||
|   return (__x >> 8) | (__x << 8); |   return (__x >> 8) | (__x << 8); | ||||||
| } | } | ||||||
|  |  | ||||||
| static __inline unsigned int | static __inline unsigned int | ||||||
| bswap_32 (unsigned int __x) | __bswap_32 (unsigned int __x) | ||||||
| { | { | ||||||
|   return (bswap_16 (__x & 0xffff) << 16) | (bswap_16 (__x >> 16)); |   return (__bswap_16 (__x & 0xffff) << 16) | (__bswap_16 (__x >> 16)); | ||||||
| } | } | ||||||
|  |  | ||||||
| static __inline unsigned long long | static __inline unsigned long long | ||||||
| bswap_64 (unsigned long long __x) | __bswap_64 (unsigned long long __x) | ||||||
| { | { | ||||||
|   return (((unsigned long long) bswap_32 (__x & 0xffffffffull)) << 32) | (bswap_32 (__x >> 32)); |   return (((unsigned long long) __bswap_32 (__x & 0xffffffffull)) << 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) | ||||||
|  |  | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user