3#include <container/seadTList.h>
4#include <prim/seadRuntimeTypeInfo.h>
5#include <basis/seadNew.h>
6#include <math/seadMathCalcCommon.h>
23 static_assert(std::is_trivially_constructible_v<T>,
"T must not have a constructor");
24 static_assert(std::is_trivially_destructible_v<T>,
"T must not have a destructor");
26 u32 alignment =
alignof(T);
28 mAlignment = sead::Mathu::max(mAlignment, alignment);
31 mSize = (mSize + alignment - 1) & ~(alignment - 1);
40 mSize = (mSize + mAlignment - 1) & ~(mAlignment - 1);
61 const sead::RuntimeTypeInfo::Interface* mTypeInfo;
76 if (offset +
sizeof(T) > mSize) [[unlikely]] {
81 return reinterpret_cast<T*>(mData + offset);
92 const sead::RuntimeTypeInfo::Interface* mTypeInfo;
Definition ClassExtension.h:64
ClassExtensionInstance(u32 size, u8 *data, const sead::RuntimeTypeInfo::Interface *typeInfo)
Definition ClassExtension.h:66
T * get(u32 offset)
Definition ClassExtension.h:75
const sead::RuntimeTypeInfo::Interface * getTypeInfo() const
Definition ClassExtension.h:85
Definition ClassExtension.h:11
const sead::RuntimeTypeInfo::Interface * getTypeInfo() const
Definition ClassExtension.h:54
void finish()
Definition ClassExtension.h:38
u32 getSize() const
Definition ClassExtension.h:44
u32 getAlignment() const
Definition ClassExtension.h:49
u32 add()
Definition ClassExtension.h:22
ClassExtension(const sead::RuntimeTypeInfo::Interface *typeInfo)
Definition ClassExtension.h:13
Definition ActorDonutBlock.h:5