sead
Loading...
Searching...
No Matches
seadPtrUtil.h
Go to the documentation of this file.
1#ifndef SEAD_PTR_UTIL_H_
2#define SEAD_PTR_UTIL_H_
3
4#include <basis/seadAssert.h>
5#include <basis/seadTypes.h>
6
7namespace sead {
8
9class PtrUtil
10{
11public:
12 static void* roundUpPow2(const void* ptr, u32 alignment)
13 {
14 return (void*)(uintptr(ptr) + (alignment - 1) & ~(alignment - 1));
15 }
16 static void* roundUpN(const void*, u32);
17 static void* roundDownPow2(const void*, u32);
18 static void* roundDownN(const void*, u32);
19
20 static void* addOffset(const void* ptr, d_sintptr offset) { return (u8*)ptr + offset; }
21 static d_sintptr diff(const void* a, const void* b) { return (d_sintptr)a - (d_sintptr)b; }
22
23 static bool isInclude(const void* ptr, const void* begin, const void* end) { return begin <= ptr && ptr < end; }
24
25 static bool isAligned(const void* ptr, s32 alignment)
26 {
27 SEAD_ASSERT(alignment != 0);
28 return reinterpret_cast<uintptr_t>(ptr) % static_cast<uintptr_t>(alignment) == 0;
29 }
30
31 static bool isAlignedPow2(const void* ptr, u32 alignment);
32 static bool isAlignedN(const void*, s32);
33};
34
35} // namespace sead
36
37#endif // SEAD_PTR_UTIL_H_
Definition seadPtrUtil.h:10
static bool isAlignedPow2(const void *ptr, u32 alignment)
static void * roundUpPow2(const void *ptr, u32 alignment)
Definition seadPtrUtil.h:12
static bool isAligned(const void *ptr, s32 alignment)
Definition seadPtrUtil.h:25
static void * addOffset(const void *ptr, d_sintptr offset)
Definition seadPtrUtil.h:20
static void * roundUpN(const void *, u32)
static bool isInclude(const void *ptr, const void *begin, const void *end)
Definition seadPtrUtil.h:23
static void * roundDownN(const void *, u32)
static bool isAlignedN(const void *, s32)
static d_sintptr diff(const void *a, const void *b)
Definition seadPtrUtil.h:21
static void * roundDownPow2(const void *, u32)
Definition seadAssert.h:44
#define SEAD_ASSERT(condition)
Definition seadAssert.h:24