Loading include/utils/TypeHelpers.h +14 −7 Original line number Diff line number Diff line Loading @@ -131,7 +131,8 @@ int compare_type(const TYPE& lhs, const TYPE& rhs) { template<typename TYPE> inline void construct_type(TYPE* p, size_t n) { if (!traits<TYPE>::has_trivial_ctor) { while (n--) { while (n > 0) { n--; new(p++) TYPE; } } Loading @@ -140,7 +141,8 @@ void construct_type(TYPE* p, size_t n) { template<typename TYPE> inline void destroy_type(TYPE* p, size_t n) { if (!traits<TYPE>::has_trivial_dtor) { while (n--) { while (n > 0) { n--; p->~TYPE(); p++; } Loading @@ -150,7 +152,8 @@ void destroy_type(TYPE* p, size_t n) { template<typename TYPE> inline void copy_type(TYPE* d, const TYPE* s, size_t n) { if (!traits<TYPE>::has_trivial_copy) { while (n--) { while (n > 0) { n--; new(d) TYPE(*s); d++, s++; } Loading @@ -162,12 +165,14 @@ void copy_type(TYPE* d, const TYPE* s, size_t n) { template<typename TYPE> inline void splat_type(TYPE* where, const TYPE* what, size_t n) { if (!traits<TYPE>::has_trivial_copy) { while (n--) { while (n > 0) { n--; new(where) TYPE(*what); where++; } } else { while (n--) { while (n > 0) { n--; *where++ = *what; } } Loading @@ -182,7 +187,8 @@ void move_forward_type(TYPE* d, const TYPE* s, size_t n = 1) { } else { d += n; s += n; while (n--) { while (n > 0) { n--; --d, --s; if (!traits<TYPE>::has_trivial_copy) { new(d) TYPE(*s); Loading @@ -203,7 +209,8 @@ void move_backward_type(TYPE* d, const TYPE* s, size_t n = 1) { { memmove(d,s,n*sizeof(TYPE)); } else { while (n--) { while (n > 0) { n--; if (!traits<TYPE>::has_trivial_copy) { new(d) TYPE(*s); } else { Loading Loading
include/utils/TypeHelpers.h +14 −7 Original line number Diff line number Diff line Loading @@ -131,7 +131,8 @@ int compare_type(const TYPE& lhs, const TYPE& rhs) { template<typename TYPE> inline void construct_type(TYPE* p, size_t n) { if (!traits<TYPE>::has_trivial_ctor) { while (n--) { while (n > 0) { n--; new(p++) TYPE; } } Loading @@ -140,7 +141,8 @@ void construct_type(TYPE* p, size_t n) { template<typename TYPE> inline void destroy_type(TYPE* p, size_t n) { if (!traits<TYPE>::has_trivial_dtor) { while (n--) { while (n > 0) { n--; p->~TYPE(); p++; } Loading @@ -150,7 +152,8 @@ void destroy_type(TYPE* p, size_t n) { template<typename TYPE> inline void copy_type(TYPE* d, const TYPE* s, size_t n) { if (!traits<TYPE>::has_trivial_copy) { while (n--) { while (n > 0) { n--; new(d) TYPE(*s); d++, s++; } Loading @@ -162,12 +165,14 @@ void copy_type(TYPE* d, const TYPE* s, size_t n) { template<typename TYPE> inline void splat_type(TYPE* where, const TYPE* what, size_t n) { if (!traits<TYPE>::has_trivial_copy) { while (n--) { while (n > 0) { n--; new(where) TYPE(*what); where++; } } else { while (n--) { while (n > 0) { n--; *where++ = *what; } } Loading @@ -182,7 +187,8 @@ void move_forward_type(TYPE* d, const TYPE* s, size_t n = 1) { } else { d += n; s += n; while (n--) { while (n > 0) { n--; --d, --s; if (!traits<TYPE>::has_trivial_copy) { new(d) TYPE(*s); Loading @@ -203,7 +209,8 @@ void move_backward_type(TYPE* d, const TYPE* s, size_t n = 1) { { memmove(d,s,n*sizeof(TYPE)); } else { while (n--) { while (n > 0) { n--; if (!traits<TYPE>::has_trivial_copy) { new(d) TYPE(*s); } else { Loading