diff --git a/include/bx/inline/allocator.inl b/include/bx/inline/allocator.inl index 60d3ca3..f3e7f89 100644 --- a/include/bx/inline/allocator.inl +++ b/include/bx/inline/allocator.inl @@ -26,7 +26,7 @@ namespace bx { const uintptr_t addr = bitCast(_ptr); const uintptr_t unaligned = addr + _extra; // space for header - const uintptr_t aligned = alignUp(unaligned, int32_t(_align) ); + const uintptr_t aligned = alignUp(unaligned, _align); return bitCast(aligned); } diff --git a/include/bx/inline/uint32_t.inl b/include/bx/inline/uint32_t.inl index 34b92a1..28a529f 100644 --- a/include/bx/inline/uint32_t.inl +++ b/include/bx/inline/uint32_t.inl @@ -640,35 +640,28 @@ namespace bx } template - inline BX_CONSTEXPR_FUNC bool isAligned(Ty _a, int32_t _align) + inline BX_CONSTEXPR_FUNC bool isAligned(Ty _a, size_t _align) { - const Ty mask = Ty(max(1, _align) - 1); - return 0 == (_a & mask); + const size_t mask = max(1, _align) - 1; + return 0 == (size_t(_a) & mask); } - template - inline BX_CONSTEXPR_FUNC bool isAligned(Ty* _ptr, int32_t _align) + template<> + inline BX_CONSTEXPR_FUNC bool isAligned(const void* _ptr, size_t _align) { const uintptr_t addr = bitCast(_ptr); return isAligned(addr, _align); } template - inline BX_CONSTEXPR_FUNC bool isAligned(const Ty* _ptr, int32_t _align) + inline BX_CONSTEXPR_FUNC Ty alignDown(Ty _a, size_t _align) { - const uintptr_t addr = bitCast(_ptr); - return isAligned(addr, _align); + const size_t mask = max(1, _align) - 1; + return Ty(size_t(_a) & ~mask); } template - inline BX_CONSTEXPR_FUNC Ty alignDown(Ty _a, int32_t _align) - { - const Ty mask = Ty(max(1, _align) - 1); - return Ty(_a & ~mask); - } - - template - inline BX_CONSTEXPR_FUNC Ty* alignDown(Ty* _ptr, int32_t _align) + inline BX_CONSTEXPR_FUNC Ty* alignDown(Ty* _ptr, size_t _align) { uintptr_t addr = bitCast(_ptr); addr = alignDown(addr, _align); @@ -676,7 +669,7 @@ namespace bx } template - inline BX_CONSTEXPR_FUNC const Ty* alignDown(const Ty* _ptr, int32_t _align) + inline BX_CONSTEXPR_FUNC const Ty* alignDown(const Ty* _ptr, size_t _align) { uintptr_t addr = bitCast(_ptr); addr = alignDown(addr, _align); @@ -684,14 +677,14 @@ namespace bx } template - inline BX_CONSTEXPR_FUNC Ty alignUp(Ty _a, int32_t _align) + inline BX_CONSTEXPR_FUNC Ty alignUp(Ty _a, size_t _align) { - const Ty mask = Ty(max(1, _align) - 1); - return Ty( (_a + mask) & ~mask); + const size_t mask = max(1, _align) - 1; + return Ty( (size_t(_a) + mask) & ~mask); } template - inline BX_CONSTEXPR_FUNC Ty* alignUp(Ty* _ptr, int32_t _align) + inline BX_CONSTEXPR_FUNC Ty* alignUp(Ty* _ptr, size_t _align) { uintptr_t addr = bitCast(_ptr); addr = alignUp(addr, _align); @@ -699,7 +692,7 @@ namespace bx } template - inline BX_CONSTEXPR_FUNC const Ty* alignUp(const Ty* _ptr, int32_t _align) + inline BX_CONSTEXPR_FUNC const Ty* alignUp(const Ty* _ptr, size_t _align) { uintptr_t addr = bitCast(_ptr); addr = alignUp(addr, _align); diff --git a/include/bx/uint32_t.h b/include/bx/uint32_t.h index f8802c2..f61f153 100644 --- a/include/bx/uint32_t.h +++ b/include/bx/uint32_t.h @@ -263,39 +263,35 @@ namespace bx /// template - BX_CONSTEXPR_FUNC bool isAligned(Ty _a, int32_t _align); + BX_CONSTEXPR_FUNC bool isAligned(Ty _a, size_t _align); + + /// + template<> + BX_CONSTEXPR_FUNC bool isAligned(const void* _ptr, size_t _align); /// template - BX_CONSTEXPR_FUNC bool isAligned(Ty* _ptr, int32_t _align); + BX_CONSTEXPR_FUNC Ty alignDown(Ty _a, size_t _align); /// template - BX_CONSTEXPR_FUNC bool isAligned(const Ty* _ptr, int32_t _align); + BX_CONSTEXPR_FUNC Ty* alignDown(Ty* _ptr, size_t _align); /// template - BX_CONSTEXPR_FUNC Ty alignDown(Ty _a, int32_t _align); + BX_CONSTEXPR_FUNC const Ty* alignDown(const Ty* _ptr, size_t _align); /// template - BX_CONSTEXPR_FUNC Ty* alignDown(Ty* _ptr, int32_t _align); + BX_CONSTEXPR_FUNC Ty alignUp(Ty _a, size_t _align); /// template - BX_CONSTEXPR_FUNC const Ty* alignDown(const Ty* _ptr, int32_t _align); + BX_CONSTEXPR_FUNC Ty* alignUp(Ty* _ptr, size_t _align); /// template - BX_CONSTEXPR_FUNC Ty alignUp(Ty _a, int32_t _align); - - /// - template - BX_CONSTEXPR_FUNC Ty* alignUp(Ty* _ptr, int32_t _align); - - /// - template - BX_CONSTEXPR_FUNC const Ty* alignUp(const Ty* _ptr, int32_t _align); + BX_CONSTEXPR_FUNC const Ty* alignUp(const Ty* _ptr, size_t _align); /// Convert float to half-float. /// diff --git a/tests/vsnprintf_test.cpp b/tests/vsnprintf_test.cpp index d333dd1..3a8b0e0 100644 --- a/tests/vsnprintf_test.cpp +++ b/tests/vsnprintf_test.cpp @@ -284,7 +284,7 @@ TEST_CASE("Format %d, %i, %o, %u, %x", "[string][printf]") REQUIRE(test("-001", "%04i", -1) ); REQUIRE(test("+001", "%+04i", 1) ); - if (sizeof(intmax_t) == 4) + if constexpr (sizeof(intmax_t) == 4) { REQUIRE(test("2147483647", "%jd", INTMAX_MAX) ); } @@ -333,7 +333,7 @@ TEST_CASE("Format %td", "[string][printf]") REQUIRE(test("-1", "%td", size) ); - if (4 == sizeof(ptrdiff_t) ) + if constexpr (4 == sizeof(ptrdiff_t) ) { REQUIRE(test("-1073741824", "%td", ptrdiff_t(3221225472) ) ); }