From 628b81ffec80eeb33fa4b723369e558b237e4f0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Branimir=20Karad=C5=BEi=C4=87?= Date: Mon, 4 Jun 2018 21:26:41 -0700 Subject: [PATCH] Removed type_traits include from macros.h. --- include/bx/bx.h | 4 ++++ include/bx/inline/bx.inl | 6 ++++++ include/bx/inline/hash.inl | 2 +- include/bx/inline/readerwriter.inl | 12 ++++++------ include/bx/macros.h | 7 ------- 5 files changed, 17 insertions(+), 14 deletions(-) diff --git a/include/bx/bx.h b/include/bx/bx.h index 64e57a5..4f5d1aa 100644 --- a/include/bx/bx.h +++ b/include/bx/bx.h @@ -34,6 +34,10 @@ namespace bx template constexpr bool isEnabled(); + /// + template + constexpr bool isTriviallyCopyable(); + /// Exchange two values. template void xchg(Ty& _a, Ty& _b); diff --git a/include/bx/inline/bx.inl b/include/bx/inline/bx.inl index cdd154d..37a00da 100644 --- a/include/bx/inline/bx.inl +++ b/include/bx/inline/bx.inl @@ -15,6 +15,12 @@ namespace bx return true; } + template + inline constexpr bool isTriviallyCopyable() + { + return __is_trivially_copyable(Ty); + } + template<> inline constexpr bool isEnabled() { diff --git a/include/bx/inline/hash.inl b/include/bx/inline/hash.inl index fdc8e9a..18bee14 100644 --- a/include/bx/inline/hash.inl +++ b/include/bx/inline/hash.inl @@ -188,7 +188,7 @@ namespace bx template inline uint32_t hash(const Ty& _data) { - BX_STATIC_ASSERT(BX_TYPE_IS_POD(Ty) ); + BX_STATIC_ASSERT(isTriviallyCopyable() ); return hash(&_data, sizeof(Ty) ); } diff --git a/include/bx/inline/readerwriter.inl b/include/bx/inline/readerwriter.inl index 27051bd..d96a6c7 100644 --- a/include/bx/inline/readerwriter.inl +++ b/include/bx/inline/readerwriter.inl @@ -276,7 +276,7 @@ namespace bx int32_t read(ReaderI* _reader, Ty& _value, Error* _err) { BX_ERROR_SCOPE(_err); - BX_STATIC_ASSERT(BX_TYPE_IS_POD(Ty) ); + BX_STATIC_ASSERT(isTriviallyCopyable() ); return _reader->read(&_value, sizeof(Ty), _err); } @@ -284,7 +284,7 @@ namespace bx int32_t readHE(ReaderI* _reader, Ty& _value, bool _fromLittleEndian, Error* _err) { BX_ERROR_SCOPE(_err); - BX_STATIC_ASSERT(BX_TYPE_IS_POD(Ty) ); + BX_STATIC_ASSERT(isTriviallyCopyable() ); Ty value; int32_t result = _reader->read(&value, sizeof(Ty), _err); _value = toHostEndian(value, _fromLittleEndian); @@ -332,7 +332,7 @@ namespace bx int32_t write(WriterI* _writer, const Ty& _value, Error* _err) { BX_ERROR_SCOPE(_err); - BX_STATIC_ASSERT(BX_TYPE_IS_POD(Ty) ); + BX_STATIC_ASSERT(isTriviallyCopyable() ); return _writer->write(&_value, sizeof(Ty), _err); } @@ -340,7 +340,7 @@ namespace bx int32_t writeLE(WriterI* _writer, const Ty& _value, Error* _err) { BX_ERROR_SCOPE(_err); - BX_STATIC_ASSERT(BX_TYPE_IS_POD(Ty) ); + BX_STATIC_ASSERT(isTriviallyCopyable() ); Ty value = toLittleEndian(_value); int32_t result = _writer->write(&value, sizeof(Ty), _err); return result; @@ -350,7 +350,7 @@ namespace bx int32_t writeBE(WriterI* _writer, const Ty& _value, Error* _err) { BX_ERROR_SCOPE(_err); - BX_STATIC_ASSERT(BX_TYPE_IS_POD(Ty) ); + BX_STATIC_ASSERT(isTriviallyCopyable() ); Ty value = toBigEndian(_value); int32_t result = _writer->write(&value, sizeof(Ty), _err); return result; @@ -432,7 +432,7 @@ namespace bx int32_t peek(ReaderSeekerI* _reader, Ty& _value, Error* _err) { BX_ERROR_SCOPE(_err); - BX_STATIC_ASSERT(BX_TYPE_IS_POD(Ty) ); + BX_STATIC_ASSERT(isTriviallyCopyable() ); return peek(_reader, &_value, sizeof(Ty), _err); } diff --git a/include/bx/macros.h b/include/bx/macros.h index aee706e..b47124e 100644 --- a/include/bx/macros.h +++ b/include/bx/macros.h @@ -7,7 +7,6 @@ #define BX_MACROS_H_HEADER_GUARD #include "bx.h" -#include /// #if BX_COMPILER_MSVC @@ -198,12 +197,6 @@ # define BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG_GCC(_x) #endif // BX_COMPILER_ -/// -#if BX_COMPILER_MSVC -# define BX_TYPE_IS_POD(t) (!__is_class(t) || __is_pod(t)) -#else -# define BX_TYPE_IS_POD(t) std::is_pod::value -#endif /// #define BX_CLASS_NO_DEFAULT_CTOR(_class) \ private: _class()