UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ArrayCollection.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Chaos/Array.h"
6
7namespace Chaos
8{
10{
11public:
13 : MSize(0) {}
17 {
18 // Null out to find dangling pointers
19 for (int32 Index = 0; Index < MArrays.Num(); Index++)
20 {
21 MArrays[Index] = nullptr;
22 }
23 }
24
26 {
27 for (int32 Index = 0; Index < MArrays.Num(); Index++)
28 {
29 if (MArrays[Index] != nullptr)
30 {
31 MArrays[Index]->ApplyShrinkPolicy(MaxSlackFraction, MinSlack);
32 }
33 }
34 }
35
37 {
38 int32 Index = MArrays.Find(nullptr);
39 if(Index == INDEX_NONE)
40 {
41 Index = MArrays.Num();
42 MArrays.Add(Array);
43 }
44 else
45 {
46 MArrays[Index] = Array;
47 }
48 MArrays[Index]->Resize(MSize);
49 return Index;
50 }
51
53 {
54 const int32 Idx = MArrays.Find(Array);
55 if(Idx != INDEX_NONE)
56 {
57 MArrays[Idx] = nullptr;
58 }
59 }
60
65
66 uint32 Size() const
67 { return MSize; }
68
70 {
71 uint64 Size = 0;
72 for (TArrayCollectionArrayBase* Array : MArrays)
73 {
74 if (Array)
75 {
76 Size += Array->SizeOfElem();
77 }
78 }
79
80 return Size;
81 }
82
83protected:
85 {
86 if(Num == 0)
87 {
88 return;
89 }
91 }
92
94 {
95 check(Num >= 0);
96 MSize = Num;
97 for (TArrayCollectionArrayBase* Array : MArrays)
98 {
99 if(Array)
100 {
101 Array->Resize(Num);
102 }
103 }
104 }
105
107 {
108 for (TArrayCollectionArrayBase* Array : MArrays)
109 {
110 if (Array)
111 {
112 Array->RemoveAt(Index, Count);
113 }
114 }
116 MSize -= FMath::Min(AvailableToRemove, Count);
117 }
118
120 {
121 check(static_cast<uint32>(Index) < MSize);
122 for (TArrayCollectionArrayBase* Array : MArrays)
123 {
124 if (Array)
125 {
126 Array->RemoveAtSwap(Index);
127 }
128 }
129 MSize--;
130 }
131
133 {
134 check(MArrays.Num() == Other.MArrays.Num());
135 check(static_cast<uint32>(Index) < MSize);
136
137 for (int32 ArrayIdx = 0; ArrayIdx < MArrays.Num(); ++ArrayIdx)
138 {
139 if (TArrayCollectionArrayBase* Array = MArrays[ArrayIdx])
140 {
141 Array->MoveToOtherArray(Index, *Other.MArrays[ArrayIdx]);
142 }
143 }
144 ++Other.MSize;
145 --MSize;
146 }
147
148private:
150
151protected:
153};
154}
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
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
@ Num
Definition MetalRHIPrivate.h:234
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ArrayCollectionArrayBase.h:9
Definition ArrayCollection.h:10
TArrayCollection(TArrayCollection &&Other)=delete
void MoveToOtherArrayCollection(const int32 Index, TArrayCollection &Other)
Definition ArrayCollection.h:132
void ShrinkArrays(const float MaxSlackFraction, const int32 MinSlack)
Definition ArrayCollection.h:25
TArrayCollection()
Definition ArrayCollection.h:12
uint32 MSize
Definition ArrayCollection.h:152
void RemoveArray(TArrayCollectionArrayBase *Array)
Definition ArrayCollection.h:52
int32 AddArray(TArrayCollectionArrayBase *Array)
Definition ArrayCollection.h:36
uint32 Size() const
Definition ArrayCollection.h:66
void ResizeHelper(const int32 Num)
Definition ArrayCollection.h:93
void RemoveAtSwapHelper(const int32 Index)
Definition ArrayCollection.h:119
TArrayCollection(const TArrayCollection &Other)=delete
void RemoveAt(int32 Index, int32 Count)
Definition ArrayCollection.h:61
virtual ~TArrayCollection()
Definition ArrayCollection.h:16
void AddElementsHelper(const int32 Num)
Definition ArrayCollection.h:84
void RemoveAtHelper(const int32 Index, const int32 Count)
Definition ArrayCollection.h:106
uint64 ComputeColumnSize() const
Definition ArrayCollection.h:69
uint32 Size() const
Definition ArrayCollection.h:66
Definition Array.h:670
Definition SkeletalMeshComponent.h:307
U16 Index
Definition radfft.cpp:71