UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ArrayCollectionArray.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
5
6#include "Chaos/Array.h"
8
9#include <algorithm>
10
11namespace Chaos
12{
13template<class T>
15{
16 using TArray<T>::SetNum;
17 using TArray<T>::RemoveAt;
18 using TArray<T>::RemoveAtSwap;
19 using TArray<T>::Emplace;
20 using TArray<T>::Shrink;
21 using TArray<T>::Max;
22
23public:
25
26 using TArray<T>::Num;
27
38
43
45
46 void Fill(const T& Value)
47 {
48 for (int32 Idx = 0; Idx < TArray<T>::Num(); ++Idx)
49 {
51 }
52 }
53
55 {
57 static_cast<TArray<T>>(NewArray) = static_cast<TArray<T>>(*this);
58 return NewArray;
59 }
60
61 // If we have more slack space than MaxSlackFraction x Num(), run the default Shrink policy
62 void ApplyShrinkPolicy(const float MaxSlackFraction, const int32 MinSlack) override
63 {
64 // Never shrink below this size
65 const int32 Slack = Max() - Num();
66 if (Slack <= MinSlack)
67 {
68 return;
69 }
70
71 // Shrink if we exceed the maximum allowed slack
72 const int32 MaxSlack = FMath::Max(MinSlack, FMath::FloorToInt(MaxSlackFraction * float(Num())));
73 if (Slack > MaxSlack)
74 {
75 Shrink();
76 }
77 }
78
79 void Resize(const int Num) override
80 {
82 }
83
84 FORCEINLINE void RemoveAt(const int Idx, const int Count) override
85 {
87 }
88
89 FORCEINLINE void RemoveAtSwap(const int Idx) override
90 {
92 }
93
95 {
96 //todo: add developer check to make sure this is ok?
97 auto& OtherTArray = static_cast<TArrayCollectionArray<T>&>(Other);
100 }
101
103 {
104 return sizeof(T);
105 }
106};
107}
108
109template<class T>
110struct TIsContiguousContainer<Chaos::TArrayCollectionArray<T>>
111{
113};
EAllowShrinking
Definition AllowShrinking.h:10
#define FORCEINLINE
Definition AndroidPlatform.h:140
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition ArrayCollectionArrayBase.h:9
Definition ArrayCollectionArray.h:15
virtual ~TArrayCollectionArray()
Definition ArrayCollectionArray.h:44
TArrayCollectionArray(TArray< T > &&Other)
Definition ArrayCollectionArray.h:39
TArrayCollectionArray(const TArrayCollectionArray< T > &Other)=delete
FORCEINLINE void RemoveAt(const int Idx, const int Count) override
Definition ArrayCollectionArray.h:84
FORCEINLINE void RemoveAtSwap(const int Idx) override
Definition ArrayCollectionArray.h:89
static constexpr EAllowShrinking AllowShrinkOnRemove
Definition ArrayCollectionArray.h:24
TArrayCollectionArray & operator=(TArrayCollectionArray< T > &&Other)
Definition ArrayCollectionArray.h:33
FORCEINLINE void MoveToOtherArray(const int Idx, TArrayCollectionArrayBase &Other)
Definition ArrayCollectionArray.h:94
FORCEINLINE uint64 SizeOfElem() const override
Definition ArrayCollectionArray.h:102
void ApplyShrinkPolicy(const float MaxSlackFraction, const int32 MinSlack) override
Definition ArrayCollectionArray.h:62
void Fill(const T &Value)
Definition ArrayCollectionArray.h:46
TArrayCollectionArray()
Definition ArrayCollectionArray.h:28
void Resize(const int Num) override
Definition ArrayCollectionArray.h:79
TArrayCollectionArray< T > Clone()
Definition ArrayCollectionArray.h:54
TArrayCollectionArray(TArrayCollectionArray< T > &&Other)
Definition ArrayCollectionArray.h:31
Definition Array.h:670
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void RemoveAt(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2083
UE_FORCEINLINE_HINT void RemoveAtSwap(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2185
UE_REWRITE SizeType Max() const
Definition Array.h:1161
UE_FORCEINLINE_HINT SizeType Emplace(ArgsType &&... Args)
Definition Array.h:2561
void SetNum(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2308
UE_FORCEINLINE_HINT void Shrink()
Definition Array.h:1278
TArray & operator=(std::initializer_list< InElementType > InitList)
Definition Array.h:785
UE_NODEBUG UE_FORCEINLINE_HINT ElementType & operator[](SizeType Index) UE_LIFETIMEBOUND
Definition Array.h:1171
Definition SkeletalMeshComponent.h:307
Definition IsContiguousContainer.h:16
static constexpr bool Value
Definition IsContiguousContainer.h:20