Removed type_traits include from macros.h.

This commit is contained in:
Branimir Karadžić
2018-06-04 21:26:41 -07:00
parent f54640444a
commit 628b81ffec
5 changed files with 17 additions and 14 deletions

View File

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

View File

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

View File

@@ -188,7 +188,7 @@ namespace bx
template<typename HashT, typename Ty>
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) );
}

View File

@@ -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<Ty>() );
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>() );
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<Ty>() );
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>() );
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>() );
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<Ty>() );
return peek(_reader, &_value, sizeof(Ty), _err);
}

View File

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