diff --git a/endian.h b/endian.h index a8d71df5..09c2ad7d 100644 --- a/endian.h +++ b/endian.h @@ -29,6 +29,8 @@ SOFTWARE. #ifndef __ETL_ENDIAN__ #define __ETL_ENDIAN__ +#include + #include "enum_type.h" ///\defgroup endian endian @@ -48,12 +50,33 @@ namespace etl little, big }; - + DECLARE_ENUM_TYPE(endian, int) ENUM_TYPE(little, "little") ENUM_TYPE(big, "big") END_ENUM_TYPE }; + + //*************************************************************************** + /// Checks the endianness of the platform. + ///\ingroup endian + //*************************************************************************** + struct endianness + { + endian operator ()() const + { + return endian(*this); + } + + operator endian() const + { + return (*reinterpret_cast(&TEST) == 0x11) ? endian::little : endian::big; + } + + private: + + static const uint16_t TEST = 0x0011; + }; } -#endif \ No newline at end of file +#endif