39 static void* roundUpPow2(
const void* ptr, uint32_t alignment)
42 return reinterpret_cast<void*
>(
43 (
reinterpret_cast<uintptr_t
>(ptr) + (alignment - 1)) & ~(static_cast<uintptr_t>(alignment - 1)));
53 static void* roundUpN(
const void* ptr, uint32_t alignment)
55 return reinterpret_cast<void*
>(
56 ((
reinterpret_cast<uintptr_t
>(ptr) + alignment - 1) / alignment) * alignment);
66 static void* roundDownPow2(
const void* ptr, uint32_t alignment)
69 return reinterpret_cast<void*
>(
reinterpret_cast<uintptr_t
>(ptr) & ~(static_cast<uintptr_t>(alignment - 1)));
79 static void* roundDownN(
const void* ptr, uint32_t alignment)
81 return reinterpret_cast<void*
>(
82 (
reinterpret_cast<uintptr_t
>(ptr) / alignment) * alignment);
92 static void* addOffset(
const void* ptr, ptrdiff_t offset)
94 return reinterpret_cast<void*
>(
static_cast<uintptr_t
>(
reinterpret_cast<uintptr_t
>(ptr) + offset));
104 static ptrdiff_t diff(
const void* a,
const void* b)
106 return reinterpret_cast<ptrdiff_t
>(a) - reinterpret_cast<ptrdiff_t>(b);
117 static bool isInclude(
const void* ptr,
const void* begin,
const void* end)
119 return (reinterpret_cast<uintptr_t>(ptr) >= reinterpret_cast<uintptr_t>(begin) && reinterpret_cast<uintptr_t>(ptr) < reinterpret_cast<uintptr_t>(end));
130 static bool isAligned(
const void* ptr,
int alignment)
132 PIA_ASSERT(alignment != 0);
135 return (reinterpret_cast<uintptr_t>(ptr) % alignment == 0);
145 static bool isAlignedPow2(
const void* ptr, uint32_t alignment)
148 return ((reinterpret_cast<uintptr_t>(ptr) & (alignment - 1)) == 0);
158 static bool isAlignedN(
const void* ptr,
int alignment)
160 PIA_ASSERT(alignment != 0);
163 return (reinterpret_cast<uintptr_t>(ptr) % alignment == 0);