10#include "Containers/Array.h"
11#include <initializer_list>
18template <
typename AllocatorType>
20 :
protected AllocatorType::ForAnyElementType
80 SlackTrackerNumChanged();
94 SlackTrackerNumChanged();
135 this->MoveToEmpty(
Other);
139 this->SlackTrackerNumChanged();
140 Other.SlackTrackerNumChanged();
147 SlackTrackerNumChanged();
160 SlackTrackerNumChanged();
186 checkf((
const char*)Addr < (
const char*)
GetData() || (
const char*)Addr >= ((
const char*)
GetData() + (
SIZE_T)
ArrayMax * NumBytesPerElement),
TEXT(
"Attempting to use a container element (%p) which already comes from the container being modified (%p, ArrayMax: %lld, ArrayNum: %lld, SizeofElement: %d)!"), Addr,
GetData(), (
long long)
ArrayMax, (
long long)
ArrayNum, NumBytesPerElement);
218 SlackTrackerNumChanged();
235 return ((
const typename AllocatorType::ForAnyElementType*)
this)->GetAllocatedSize(
ArrayMax, NumBytesPerElement);
250 SlackTrackerNumChanged();
278 NewMax = this->CalculateSlackReserve(
NewMax, NumBytesPerElement);
290#if UE_ENABLE_ARRAY_SLACK_TRACKING
293 ((
typename AllocatorType::ForAnyElementType*)
this)->SlackTrackerLogNum(
ArrayNum);
EAllowShrinking
Definition AllowShrinking.h:10
#define UE_ALLOWSHRINKING_BOOL_DEPRECATED(FunctionName)
Definition AllowShrinking.h:31
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
void * GetAllocation(void *Target, uint32 Size, uint32 Offset, uint32 Alignment=16)
Definition OpenGLBuffer.cpp:57
Definition Archive.h:1208
virtual void CountBytes(SIZE_T InNum, SIZE_T InMax)
Definition Archive.h:125
Definition ScriptArray.h:328
void operator=(const FScriptArray &)
Definition ScriptArray.h:361
FScriptArray(int32 InNum, int32 NumBytesPerElement, uint32 AlignmentOfElement)
Definition ScriptArray.h:340
FScriptArray(FIntrusiveUnsetOptionalState Tag)
Definition ScriptArray.h:350
FScriptArray(const FScriptArray &)
Definition ScriptArray.h:360
void MoveAssign(FScriptArray &Other, int32 NumBytesPerElement, uint32 AlignmentOfElement)
Definition ScriptArray.h:334
Definition ScriptArray.h:21
int32 AddZeroed(int32 Count, int32 NumBytesPerElement, uint32 AlignmentOfElement)
Definition ScriptArray.h:98
FORCEINLINE bool IsValidIndex(int32 i) const
Definition ScriptArray.h:32
void Empty(int32 Slack, int32 NumBytesPerElement, uint32 AlignmentOfElement)
Definition ScriptArray.h:142
void Reset(int32 NewSize, int32 NumBytesPerElement, uint32 AlignmentOfElement)
Definition ScriptArray.h:154
int32 ArrayMax
Definition ScriptArray.h:253
TScriptArray()
Definition ScriptArray.h:175
FORCEINLINE void CheckAddress(const void *Addr, int32 NumBytesPerElement) const
Definition ScriptArray.h:184
void Remove(int32 Index, int32 Count, int32 NumBytesPerElement, uint32 AlignmentOfElement, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition ScriptArray.h:196
void CountBytes(FArchive &Ar, int32 NumBytesPerElement) const
Definition ScriptArray.h:180
FORCEINLINE const void * GetData() const
Definition ScriptArray.h:28
int32 Add(int32 Count, int32 NumBytesPerElement, uint32 AlignmentOfElement)
Definition ScriptArray.h:82
FORCENOINLINE void ResizeShrink(int32 NumBytesPerElement, uint32 AlignmentOfElement)
Definition ScriptArray.h:265
void Shrink(int32 NumBytesPerElement, uint32 AlignmentOfElement)
Definition ScriptArray.h:104
void operator=(const TScriptArray &)
Definition ScriptArray.h:322
bool IsEmpty() const
Definition ScriptArray.h:36
FORCENOINLINE void ResizeGrow(int32 OldNum, int32 NumBytesPerElement, uint32 AlignmentOfElement)
Definition ScriptArray.h:260
TScriptArray(FIntrusiveUnsetOptionalState Tag)
Definition ScriptArray.h:305
FORCENOINLINE void ResizeTo(int32 NewMax, int32 NumBytesPerElement, uint32 AlignmentOfElement)
Definition ScriptArray.h:274
FORCENOINLINE void ResizeInit(int32 NumBytesPerElement, uint32 AlignmentOfElement)
Definition ScriptArray.h:255
bool operator==(FIntrusiveUnsetOptionalState Tag) const
Definition ScriptArray.h:311
FORCEINLINE int32 GetSlack() const
Definition ScriptArray.h:191
void MoveAssign(TScriptArray &Other, int32 NumBytesPerElement, uint32 AlignmentOfElement)
Definition ScriptArray.h:131
TScriptArray(int32 InNum, int32 NumBytesPerElement, uint32 AlignmentOfElement)
Definition ScriptArray.h:240
void SwapMemory(int32 A, int32 B, int32 NumBytesPerElement)
Definition ScriptArray.h:167
void Insert(int32 Index, int32 Count, int32 NumBytesPerElement, uint32 AlignmentOfElement)
Definition ScriptArray.h:60
static constexpr bool bHasIntrusiveUnsetOptionalState
Definition ScriptArray.h:302
FORCEINLINE int32 Num() const
Definition ScriptArray.h:40
int32 ArrayNum
Definition ScriptArray.h:252
void SetNumUninitialized(int32 NewNum, int32 NumBytesPerElement, uint32 AlignmentOfElement, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition ScriptArray.h:113
void InsertZeroed(int32 Index, int32 Count, int32 NumBytesPerElement, uint32 AlignmentOfElement)
Definition ScriptArray.h:55
SIZE_T GetAllocatedSize(int32 NumBytesPerElement) const
Definition ScriptArray.h:233
FORCEINLINE int32 Max() const
Definition ScriptArray.h:51
TScriptArray(const TScriptArray &)
Definition ScriptArray.h:321
FORCEINLINE int32 NumUnchecked() const
Definition ScriptArray.h:46
FORCEINLINE void * GetData()
Definition ScriptArray.h:24
Definition ContainerAllocationPolicies.h:618
U16 Index
Definition radfft.cpp:71
Definition IntrusiveUnsetOptionalState.h:71
static UE_FORCEINLINE_HINT void * Memmove(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:109
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
static UE_FORCEINLINE_HINT void Memswap(void *Ptr1, void *Ptr2, SIZE_T Size)
Definition UnrealMemory.h:187
Definition ContainerAllocationPolicies.h:256
Definition UnrealTypeTraits.h:172