5#include "Containers/Array.h"
9#define CHAOS_SCRATCHBUFFER_CHECKSENTINEL (DO_CHECK)
20 static const size_t SentinelValue = 0xA1B2C3D4A1B2C3D4ll;
26 , BufferBegin(nullptr)
39 return BufferEnd - BufferBegin;
53 BufferNext = BufferBegin;
58 static_assert(std::is_trivially_destructible_v<T>,
"FScratchBuffer only supports trivially destructible types");
60 void* Address = AllocAligned(
sizeof(T),
alignof(T));
66 static_assert(std::is_trivially_destructible_v<T>,
"FScratchBuffer only supports trivially destructible types");
68 const size_t AlignedSize =
Align(
sizeof(T),
alignof(T));
69 void* Address = AllocAligned(
Num * AlignedSize,
alignof(T));
86 if (Objects !=
nullptr)
90 new(&Objects[
Index]) T(Args...);
126 if (BufferBegin !=
nullptr)
134 BufferNext = BufferBegin;
141 if (BufferBegin !=
nullptr)
143 delete[] BufferBegin;
146 BufferBegin =
nullptr;
148 BufferNext =
nullptr;
153 return (
size_t*)BufferEnd;
158 if (Sentinel() !=
nullptr)
160 *Sentinel() = SentinelValue;
166#if CHAOS_SCRATCHBUFFER_CHECKSENTINEL
167 if (Sentinel() !=
nullptr)
169 check(*Sentinel() == SentinelValue);
182#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_5
constexpr T Align(T Val, uint64 Alignment)
Definition AlignmentTemplates.h:18
#define check(expr)
Definition AssertionMacros.h:314
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition ScratchBuffer.h:18
T * AllocArray(const int32 Num, TArgs... Args)
Definition ScratchBuffer.h:83
size_t BufferSize() const
Definition ScratchBuffer.h:36
~FScratchBuffer()
Definition ScratchBuffer.h:31
FScratchBuffer()
Definition ScratchBuffer.h:24
T * AllocArrayUninitialized(const int32 Num)
Definition ScratchBuffer.h:64
T * Alloc(TArgs... Args)
Definition ScratchBuffer.h:73
T * AllocUninitialized()
Definition ScratchBuffer.h:56
void Reset(const size_t InMaxBytes)
Definition ScratchBuffer.h:47
void Empty()
Definition ScratchBuffer.h:42
Definition SkeletalMeshComponent.h:307
Definition OverriddenPropertySet.cpp:45
U16 Index
Definition radfft.cpp:71