From 7890a69e4d8e9689e8d3a16ebc427c08ba0c45ec Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Sun, 26 May 2013 20:32:37 +0200 Subject: [PATCH] src: add endianness helper functions --- src/node_internals.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/node_internals.h b/src/node_internals.h index f4d787586f..6055147b6c 100644 --- a/src/node_internals.h +++ b/src/node_internals.h @@ -113,6 +113,30 @@ v8::Handle FromConstructorTemplate( // allow for quick domain check extern bool using_domains; +enum Endianness { + kLittleEndian, // _Not_ LITTLE_ENDIAN, clashes with endian.h. + kBigEndian +}; + +inline enum Endianness GetEndianness() { + // Constant-folded by the compiler. + const union { + uint8_t u8[2]; + uint16_t u16; + } u = { + { 1, 0 } + }; + return u.u16 == 1 ? kLittleEndian : kBigEndian; +} + +inline bool IsLittleEndian() { + return GetEndianness() == kLittleEndian; +} + +inline bool IsBigEndian() { + return GetEndianness() == kBigEndian; +} + } // namespace node #endif // SRC_NODE_INTERNALS_H_