From f86ea02de634b15ffcc1a2b6b991df5f59dba02c Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Mon, 12 Aug 2019 12:04:05 -0700 Subject: [PATCH] Use as much of the macOS endian support as we can. Turns out that although there's no or , there are and , and they're included by other system headers such as . Reuse the contents of here for better interop. Bug: http://b/139203733 Test: treehugger Change-Id: Ic0e9bfa1a5b56d05e9e542839d237b6ceae4aa8c --- base/include/android-base/endian.h | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/base/include/android-base/endian.h b/base/include/android-base/endian.h index cbbd8c9bc..10efaa3a8 100644 --- a/base/include/android-base/endian.h +++ b/base/include/android-base/endian.h @@ -41,23 +41,28 @@ #else -/* Mac OS and Windows have nothing. */ - -#define __LITTLE_ENDIAN 1234 +#if defined(__APPLE__) +/* macOS has some of the basics. */ +#include +#else +/* Windows really has nothing. */ #define LITTLE_ENDIAN __LITTLE_ENDIAN - -#define __BIG_ENDIAN 4321 #define BIG_ENDIAN __BIG_ENDIAN - -#define __BYTE_ORDER __LITTLE_ENDIAN #define BYTE_ORDER __BYTE_ORDER - #define htons(x) __builtin_bswap16(x) #define htonl(x) __builtin_bswap32(x) -#define htonq(x) __builtin_bswap64(x) - #define ntohs(x) __builtin_bswap16(x) #define ntohl(x) __builtin_bswap32(x) +#endif + +/* Neither macOS nor Windows have the rest. */ + +#define __LITTLE_ENDIAN 1234 +#define __BIG_ENDIAN 4321 +#define __BYTE_ORDER __LITTLE_ENDIAN + +#define htonq(x) __builtin_bswap64(x) + #define ntohq(x) __builtin_bswap64(x) #define htobe16(x) __builtin_bswap16(x)