Procházet zdrojové kódy

Removed type_traits include from macros.h.

Branimir Karadžić před 7 roky
rodič
revize
628b81ffec

+ 4 - 0
include/bx/bx.h

@@ -34,6 +34,10 @@ namespace bx
 	template<bool>
 	template<bool>
 	constexpr bool isEnabled();
 	constexpr bool isEnabled();
 
 
+	///
+	template<class Ty>
+	constexpr bool isTriviallyCopyable();
+
 	/// Exchange two values.
 	/// Exchange two values.
 	template<typename Ty>
 	template<typename Ty>
 	void xchg(Ty& _a, Ty& _b);
 	void xchg(Ty& _a, Ty& _b);

+ 6 - 0
include/bx/inline/bx.inl

@@ -15,6 +15,12 @@ namespace bx
 		return true;
 		return true;
 	}
 	}
 
 
+	template<class Ty>
+	inline constexpr bool isTriviallyCopyable()
+	{
+		return __is_trivially_copyable(Ty);
+	}
+
 	template<>
 	template<>
 	inline constexpr bool isEnabled<false>()
 	inline constexpr bool isEnabled<false>()
 	{
 	{

+ 1 - 1
include/bx/inline/hash.inl

@@ -188,7 +188,7 @@ namespace bx
 	template<typename HashT, typename Ty>
 	template<typename HashT, typename Ty>
 	inline uint32_t hash(const Ty& _data)
 	inline uint32_t hash(const Ty& _data)
 	{
 	{
-		BX_STATIC_ASSERT(BX_TYPE_IS_POD(Ty) );
+		BX_STATIC_ASSERT(isTriviallyCopyable<Ty>() );
 		return hash<HashT>(&_data, sizeof(Ty) );
 		return hash<HashT>(&_data, sizeof(Ty) );
 	}
 	}
 
 

+ 6 - 6
include/bx/inline/readerwriter.inl

@@ -276,7 +276,7 @@ namespace bx
 	int32_t read(ReaderI* _reader, Ty& _value, Error* _err)
 	int32_t read(ReaderI* _reader, Ty& _value, Error* _err)
 	{
 	{
 		BX_ERROR_SCOPE(_err);
 		BX_ERROR_SCOPE(_err);
-		BX_STATIC_ASSERT(BX_TYPE_IS_POD(Ty) );
+		BX_STATIC_ASSERT(isTriviallyCopyable<Ty>() );
 		return _reader->read(&_value, sizeof(Ty), _err);
 		return _reader->read(&_value, sizeof(Ty), _err);
 	}
 	}
 
 
@@ -284,7 +284,7 @@ namespace bx
 	int32_t readHE(ReaderI* _reader, Ty& _value, bool _fromLittleEndian, Error* _err)
 	int32_t readHE(ReaderI* _reader, Ty& _value, bool _fromLittleEndian, Error* _err)
 	{
 	{
 		BX_ERROR_SCOPE(_err);
 		BX_ERROR_SCOPE(_err);
-		BX_STATIC_ASSERT(BX_TYPE_IS_POD(Ty) );
+		BX_STATIC_ASSERT(isTriviallyCopyable<Ty>() );
 		Ty value;
 		Ty value;
 		int32_t result = _reader->read(&value, sizeof(Ty), _err);
 		int32_t result = _reader->read(&value, sizeof(Ty), _err);
 		_value = toHostEndian(value, _fromLittleEndian);
 		_value = toHostEndian(value, _fromLittleEndian);
@@ -332,7 +332,7 @@ namespace bx
 	int32_t write(WriterI* _writer, const Ty& _value, Error* _err)
 	int32_t write(WriterI* _writer, const Ty& _value, Error* _err)
 	{
 	{
 		BX_ERROR_SCOPE(_err);
 		BX_ERROR_SCOPE(_err);
-		BX_STATIC_ASSERT(BX_TYPE_IS_POD(Ty) );
+		BX_STATIC_ASSERT(isTriviallyCopyable<Ty>() );
 		return _writer->write(&_value, sizeof(Ty), _err);
 		return _writer->write(&_value, sizeof(Ty), _err);
 	}
 	}
 
 
@@ -340,7 +340,7 @@ namespace bx
 	int32_t writeLE(WriterI* _writer, const Ty& _value, Error* _err)
 	int32_t writeLE(WriterI* _writer, const Ty& _value, Error* _err)
 	{
 	{
 		BX_ERROR_SCOPE(_err);
 		BX_ERROR_SCOPE(_err);
-		BX_STATIC_ASSERT(BX_TYPE_IS_POD(Ty) );
+		BX_STATIC_ASSERT(isTriviallyCopyable<Ty>() );
 		Ty value = toLittleEndian(_value);
 		Ty value = toLittleEndian(_value);
 		int32_t result = _writer->write(&value, sizeof(Ty), _err);
 		int32_t result = _writer->write(&value, sizeof(Ty), _err);
 		return result;
 		return result;
@@ -350,7 +350,7 @@ namespace bx
 	int32_t writeBE(WriterI* _writer, const Ty& _value, Error* _err)
 	int32_t writeBE(WriterI* _writer, const Ty& _value, Error* _err)
 	{
 	{
 		BX_ERROR_SCOPE(_err);
 		BX_ERROR_SCOPE(_err);
-		BX_STATIC_ASSERT(BX_TYPE_IS_POD(Ty) );
+		BX_STATIC_ASSERT(isTriviallyCopyable<Ty>() );
 		Ty value = toBigEndian(_value);
 		Ty value = toBigEndian(_value);
 		int32_t result = _writer->write(&value, sizeof(Ty), _err);
 		int32_t result = _writer->write(&value, sizeof(Ty), _err);
 		return result;
 		return result;
@@ -432,7 +432,7 @@ namespace bx
 	int32_t peek(ReaderSeekerI* _reader, Ty& _value, Error* _err)
 	int32_t peek(ReaderSeekerI* _reader, Ty& _value, Error* _err)
 	{
 	{
 		BX_ERROR_SCOPE(_err);
 		BX_ERROR_SCOPE(_err);
-		BX_STATIC_ASSERT(BX_TYPE_IS_POD(Ty) );
+		BX_STATIC_ASSERT(isTriviallyCopyable<Ty>() );
 		return peek(_reader, &_value, sizeof(Ty), _err);
 		return peek(_reader, &_value, sizeof(Ty), _err);
 	}
 	}
 
 

+ 0 - 7
include/bx/macros.h

@@ -7,7 +7,6 @@
 #define BX_MACROS_H_HEADER_GUARD
 #define BX_MACROS_H_HEADER_GUARD
 
 
 #include "bx.h"
 #include "bx.h"
-#include <type_traits>
 
 
 ///
 ///
 #if BX_COMPILER_MSVC
 #if BX_COMPILER_MSVC
@@ -198,12 +197,6 @@
 #	define BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG_GCC(_x)
 #	define BX_PRAGMA_DIAGNOSTIC_IGNORED_CLANG_GCC(_x)
 #endif // BX_COMPILER_
 #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<t>::value
-#endif
 ///
 ///
 #define BX_CLASS_NO_DEFAULT_CTOR(_class) \
 #define BX_CLASS_NO_DEFAULT_CTOR(_class) \
 			private: _class()
 			private: _class()