19#include "Algo/HeapSort.h"
22#include "Algo/StableSort.h"
24#include "Templates/IdentityFunctor.h"
25#include "Templates/Invoke.h"
29#include "Templates/Sorting.h"
37#if UE_BUILD_SHIPPING || UE_BUILD_TEST
38 #define TARRAY_RANGED_FOR_CHECKS 0
40 #define TARRAY_RANGED_FOR_CHECKS 1
46 enum {
Value = std::is_arithmetic_v<T> };
62template <
typename ContainerType,
typename ElementType,
typename SizeType>
124 return Container[
Index ];
129 return &Container[
Index ];
135 return Container.IsValidIndex(
Index);
153 Index = Container.Num();
159 Container.RemoveAt(
Index);
170 Container.RemoveAtSwap(
Index);
176 return &Container == &Rhs.Container &&
Index == Rhs.Index;
178#if !PLATFORM_COMPILER_HAS_GENERATED_COMPARISON_OPERATORS
181 return &Container != &Rhs.Container ||
Index != Rhs.Index;
186 ContainerType& Container;
192template <
typename ContainerType,
typename ElementType,
typename SizeType>
199#if TARRAY_RANGED_FOR_CHECKS
204 template <
typename ElementType,
typename SizeType,
bool bReverse = false>
221 if constexpr (bReverse)
233 if constexpr (bReverse)
245 if constexpr (bReverse)
258 if constexpr (bReverse)
276 ensureMsgf(CurrentNum == InitialNum,
TEXT(
"Array has changed during ranged-for iteration!"));
277 return Ptr != Rhs.Ptr;
282 return !(*
this != Rhs);
288 const SizeType& CurrentNum;
294template <
typename ElementType,
typename IteratorType>
304 return *(ElementType*)*Iter;
315 return Iter != Rhs.Iter;
326 template <
typename T>
332 template <
typename FromArrayType,
typename ToArrayType>
335 using FromAllocatorType =
typename FromArrayType::AllocatorType;
336 using ToAllocatorType =
typename ToArrayType::AllocatorType;
337 using FromElementType =
typename FromArrayType::ElementType;
338 using ToElementType =
typename ToArrayType::ElementType;
348 std::is_same_v <const ToElementType, const FromElementType> ||
367 template <
typename DestType,
typename SourceType>
368 constexpr bool TArrayElementsAreCompatible_V = std::disjunction_v<std::is_same<DestType, std::decay_t<SourceType>>, std::is_constructible<DestType, SourceType>>;
370 template <
typename ElementType,
typename AllocatorType>
374 template <
typename T>
375 constexpr bool TIsTArrayOrDerivedFromTArray_V =
sizeof(ResolveIsTArrayPtr((T*)
nullptr)) == 2;
381 template <
typename AllocatorInstanceType>
382 using TAllocatorSizeType_T =
decltype(std::declval<AllocatorInstanceType&>().GetInitialCapacity());
390 template <
typename AllocatorType>
410 template <u
int32 Flags,
typename AllocatorInstanceType>
419 using USizeType = std::make_unsigned_t<SizeType>;
421 const USizeType
UOldMax = (USizeType)ArrayMax;
429 OnInvalidArrayNum((
unsigned long long)
UNewNum);
433 if constexpr (!!(
Flags & 1))
435 NewMax = AllocatorInstance.CalculateSlackGrow(
NewNum,
OldMax, ElementSize, ElementAlignment);
436 AllocatorInstance.ResizeAllocation(
UOldMax,
NewMax, ElementSize, ElementAlignment);
441 AllocatorInstance.ResizeAllocation(
UOldMax,
NewMax, ElementSize);
444 #if UE_ENABLE_ARRAY_SLACK_TRACKING
445 if constexpr (!!(
Flags & 2))
447 AllocatorInstance.SlackTrackerLogNum(
NewNum);
456 template <u
int32 Flags,
typename AllocatorInstanceType>
466 template <u
int32 Flags,
typename AllocatorInstanceType>
478 template <u
int32 Flags,
typename AllocatorInstanceType>
489 using USizeType = std::make_unsigned_t<SizeType>;
492 const USizeType
UOldNum = (USizeType)ArrayNum;
493 const USizeType
UOldMax = (USizeType)ArrayMax;
514 OnInvalidArrayNum((
unsigned long long)
UNewNum);
517 if constexpr (!!(
Flags & 1))
519 NewMax = AllocatorInstance.CalculateSlackGrow(
NewNum,
OldMax, ElementSize, ElementAlignment);
520 AllocatorInstance.ResizeAllocation(
UOldNum,
NewMax, ElementSize, ElementAlignment);
525 AllocatorInstance.ResizeAllocation(
UOldNum,
NewMax, ElementSize);
528#if UE_ENABLE_ARRAY_SLACK_TRACKING
529 if constexpr (!!(
Flags & 2))
531 AllocatorInstance.SlackTrackerLogNum(
NewNum);
540 template <u
int32 Flags,
typename AllocatorInstanceType>
553 if constexpr (!!(
Flags & 1))
555 SizeType
NewArrayMax = AllocatorInstance.CalculateSlackShrink(ArrayNum,
OldArrayMax, ElementSize, ElementAlignment);
559 AllocatorInstance.ResizeAllocation(ArrayNum,
NewArrayMax, ElementSize, ElementAlignment);
568 AllocatorInstance.ResizeAllocation(ArrayNum,
NewArrayMax, ElementSize);
575 template <u
int32 Flags,
typename AllocatorInstanceType>
585 if constexpr (!!(
Flags & 1))
589 NewMax = AllocatorInstance.CalculateSlackReserve(
NewMax, ElementSize, ElementAlignment);
594 AllocatorInstance.ResizeAllocation(ArrayNum,
NewMax, ElementSize, ElementAlignment);
601 NewMax = AllocatorInstance.CalculateSlackReserve(
NewMax, ElementSize);
606 AllocatorInstance.ResizeAllocation(ArrayNum,
NewMax, ElementSize);
611 template <u
int32 Flags,
typename AllocatorInstanceType>
622 if constexpr (!!(
Flags & 1))
626 NewMax = AllocatorInstance.CalculateSlackReserve(
NewMax, ElementSize, ElementAlignment);
630 AllocatorInstance.ResizeAllocation(0,
NewMax, ElementSize, ElementAlignment);
641 NewMax = AllocatorInstance.CalculateSlackReserve(
NewMax, ElementSize);
645 AllocatorInstance.ResizeAllocation(0,
NewMax, ElementSize);
668template<
typename InElementType,
typename InAllocatorType>
671 template <
typename OtherInElementType,
typename OtherAllocator>
675 using SizeType =
typename InAllocatorType::SizeType ;
680 using USizeType =
typename std::make_unsigned_t<SizeType>;
684 AllocatorType::NeedsElementType,
686 typename AllocatorType::ForAnyElementType
689 static_assert(std::is_signed_v<SizeType>,
"TArray only supports signed index types");
720 UE::Core::Private::OnInvalidArrayNum((
unsigned long long)(USizeType)
Count);
725 CopyToEmpty(Ptr,
Count, 0);
728 template <
typename OtherElementType,
typename OtherSizeType>
750 UE_REQUIRES(UE::Core::Private::TArrayElementsAreCompatible_V<ElementType, const OtherElementType&>)
776 CopyToEmptyWithSlack(
Other.GetData(),
Other.Num(), 0, ExtraSlack);
803 template<
typename OtherAllocatorType>
827 template <
typename OtherElementType,
typename OtherSizeType>
834#if UE_ENABLE_ARRAY_SLACK_TRACKING
849 template <
typename FromArrayType,
typename ToArrayType>
852 if constexpr (UE::Core::Private::CanMoveTArrayPointersBetweenArrayTypes<FromArrayType, ToArrayType>())
856 static_assert(std::is_same_v<TArray, ToArrayType>,
"MoveOrCopy is expected to be called with the current array type as the destination");
858 using FromAllocatorType =
typename FromArrayType::AllocatorType;
859 using ToAllocatorType =
typename ToArrayType::AllocatorType;
867 ToArray.AllocatorInstance.MoveToEmpty(
FromArray.AllocatorInstance);
874 if constexpr (
sizeof(USizeType) <
sizeof(
typename FromArrayType::USizeType))
879 UE::Core::Private::OnInvalidArrayNum((
unsigned long long)(USizeType)ToArray.ArrayNum);
887 ToArray.SlackTrackerNumChanged();
906 template <
typename FromArrayType,
typename ToArrayType>
909 if constexpr (UE::Core::Private::CanMoveTArrayPointersBetweenArrayTypes<FromArrayType, ToArrayType>())
921 UE::Core::Private::OnInvalidArrayNum((
unsigned long long)ExtraSlack);
942 MoveOrCopy(*
this,
Other, 0);
953 UE_REQUIRES(UE::Core::Private::TArrayElementsAreCompatible_V<ElementType, OtherElementType&&>)
957 MoveOrCopy(*
this,
Other, 0);
969 UE_REQUIRES(UE::Core::Private::TArrayElementsAreCompatible_V<ElementType, OtherElementType&&>)
973 MoveOrCopyWithSlack(*
this,
Other, 0, ExtraSlack);
1093 if constexpr (AllocatorType::RequireRangeCheck)
1110 if constexpr (AllocatorType::RequireRangeCheck)
1203 UE::Core::Private::ReallocShrink<UE::Core::Private::GetAllocatorFlags<AllocatorType>()>(
1254 return const_cast<TArray*
>(
this)->
Top();
1283 UE::Core::Private::ReallocTo<UE::Core::Private::GetAllocatorFlags<AllocatorType>()>(
1322 return static_cast<SizeType>(Data - Start);
1355 return static_cast<SizeType>(Data - Start);
1368 template <
typename Predicate>
1377 return static_cast<SizeType>(Data - Start);
1389 template <
typename Predicate>
1402 template <
typename KeyType>
1410 return static_cast<SizeType>(Data - Start);
1422 template <
typename Predicate>
1430 return static_cast<SizeType>(Data - Start);
1444 template <
typename KeyType>
1457 template <
typename KeyType>
1470 template <
typename Predicate>
1483 template <
typename Predicate>
1497 template <
typename Predicate>
1517 template <
typename ComparisonType>
1537 template <
typename Predicate>
1562#if !PLATFORM_COMPILER_HAS_GENERATED_COMPARISON_OPERATORS
1714 return UE::Core::Private::ReallocGrow<UE::Core::Private::GetAllocatorFlags<AllocatorType>()>(
1748 SizeType OldNum = UE::Core::Private::ReallocGrow<UE::Core::Private::GetAllocatorFlags<AllocatorType>()>(
1784 InsertUninitializedImpl(
Index);
1805 InsertUninitializedImpl(
Index);
1827 InsertUninitializedImpl(
Index, 1);
1843 InsertUninitializedImpl(
Index);
1862 InsertUninitializedImpl(
Index, 1);
1892 template <
typename OtherAllocator>
1895 check((
const void*)
this != (
const void*)&Items);
1912 template <
typename OtherAllocator>
1915 check((
const void*)
this != (
const void*)&Items);
1923 Items.SlackTrackerNumChanged();
1939 check(Ptr !=
nullptr);
1975 InsertUninitializedImpl(
Index);
1994 InsertUninitializedImpl(
Index);
2014 InsertUninitializedImpl(
Index);
2034 InsertUninitializedImpl(
Index);
2055 SlackTrackerNumChanged();
2072 SlackTrackerNumChanged();
2086 RemoveAtImpl(
Index);
2089 UE::Core::Private::ReallocShrink<UE::Core::Private::GetAllocatorFlags<AllocatorType>()>(
2108 template <UE::CIntegral CountType>
2111 static_assert(!std::is_same_v<CountType, bool>,
"TArray::RemoveAt: unexpected bool passed as the Count argument");
2118 UE::Core::Private::ReallocShrink<UE::Core::Private::GetAllocatorFlags<AllocatorType>()>(
2128 template <
typename CountType>
2152 SlackTrackerNumChanged();
2171 SlackTrackerNumChanged();
2188 RemoveAtSwapImpl(
Index);
2191 UE::Core::Private::ReallocShrink<UE::Core::Private::GetAllocatorFlags<AllocatorType>()>(
2213 template <UE::CIntegral CountType>
2216 static_assert(!std::is_same_v<CountType, bool>,
"TArray::RemoveAtSwap: unexpected bool passed as the Count argument");
2223 UE::Core::Private::ReallocShrink<UE::Core::Private::GetAllocatorFlags<AllocatorType>()>(
2233 template <
typename CountType>
2251 UE::Core::Private::OnInvalidArrayNum((
unsigned long long)(USizeType)NewSize);
2260 SlackTrackerNumChanged();
2278 UE::Core::Private::OnInvalidArrayNum((
unsigned long long)(USizeType)Slack);
2286 SlackTrackerNumChanged();
2290 UE::Core::Private::ReallocTo<UE::Core::Private::GetAllocatorFlags<AllocatorType>()>(
2319 UE::Core::Private::OnInvalidArrayNum((
unsigned long long)(USizeType)
NewNum);
2349 UE::Core::Private::OnInvalidArrayNum((
unsigned long long)(USizeType)
NewNum);
2378 UE::Core::Private::OnInvalidArrayNum((
unsigned long long)(USizeType)
NewNum);
2400 SlackTrackerNumChanged();
2411 template <
typename OtherElementType,
typename OtherAllocatorType>
2414 check((
void*)
this != (
void*)&Source);
2435 template <
typename OtherElementType,
typename OtherAllocator>
2438 check((
void*)
this != (
void*)&Source);
2451 Source.ArrayNum = 0;
2453 Source.SlackTrackerNumChanged();
2466 !UE::Core::Private::TIsTArrayOrDerivedFromTArray_V<std::remove_reference_t<RangeType>> &&
2667 InsertUninitializedImpl(
Index, 1);
2681 InsertUninitializedImpl(
Index, 1);
2823#if !UE_DEPRECATE_MUTABLE_TOBJECTPTR
2832 ElementCompat::ReinterpretRangeContiguous(
begin(),
end(),
Num());
2845 ElementCompat::ReinterpretRangeContiguous(
begin(),
end(),
Num());
2927 check((
const void*)
this != (
const void*)&Items);
2936 Items.SlackTrackerNumChanged();
2970 template <
typename ArgsType>
3007 return AddUniqueImpl(Item);
3022 UE::Core::Private::OnInvalidArrayNum((
unsigned long long)(USizeType)
Number);
3026 UE::Core::Private::ReallocTo<UE::Core::Private::GetAllocatorFlags<AllocatorType>()>(
3077 SlackTrackerNumChanged();
3107 template <
class PREDICATE_CLASS>
3124 while (ReadIndex < OriginalNum &&
bNotMatch == !
::Invoke(Predicate, Data[ReadIndex]))
3145 }
while (ReadIndex < OriginalNum);
3149 SlackTrackerNumChanged();
3162 template <
class PREDICATE_CLASS>
3165 bool bRemoved =
false;
3169 if (
::Invoke(Predicate, (*
this)[ItemIndex]))
3182 UE::Core::Private::ReallocShrink<UE::Core::Private::GetAllocatorFlags<AllocatorType>()>(
3193 template <
class PREDICATE_CLASS>
3249 bool bRemoved =
false;
3252 if ((*
this)[
Index] == Item)
3261 UE::Core::Private::ReallocShrink<UE::Core::Private::GetAllocatorFlags<AllocatorType>()>(
3324 template<
typename SearchType>
3330 if ((*
this)[Idx] !=
nullptr && (*
this)[Idx]->IsA(
SearchClass))
3332 if (Item !=
nullptr)
3336 if (ItemIndex !=
nullptr)
3370 #if TARRAY_RANGED_FOR_CHECKS
3388 #if TARRAY_RANGED_FOR_CHECKS
3433 template <
class PREDICATE_CLASS>
3467 template <
class PREDICATE_CLASS>
3474#if defined(_MSC_VER) && !defined(__clang__)
3496 template <
typename OtherElementType,
typename OtherSizeType>
3505 UE::Core::Private::ReallocForCopy<UE::Core::Private::GetAllocatorFlags<AllocatorType>()>(
3521 SlackTrackerNumChanged();
3533 template <
typename OtherElementType,
typename OtherSizeType>
3547 UE::Core::Private::OnInvalidArrayNum((
unsigned long long)
NewMax);
3550 UE::Core::Private::ReallocForCopy<UE::Core::Private::GetAllocatorFlags<AllocatorType>()>(
3566 SlackTrackerNumChanged();
3571 template<
typename ElementType,
typename AllocatorType>
3601 DstArray->SetNumZeroed(this->ArrayNum);
3639 template <
class PREDICATE_CLASS>
3670 template <
class PREDICATE_CLASS>
3692 template <
class PREDICATE_CLASS>
3747 template <
class PREDICATE_CLASS>
3756 template <
class PREDICATE_CLASS>
3790 template <
class PREDICATE_CLASS>
3807 template <
class PREDICATE_CLASS>
3814 template <
class PREDICATE_CLASS>
3875 template <
class PREDICATE_CLASS>
3884 template <
class PREDICATE_CLASS>
3921 template <
class PREDICATE_CLASS>
3956 template<
typename T,
typename AllocatorType>
3959 Object.WriteMemoryImage(Writer);
3962 template<
typename T,
typename AllocatorType>
3969 template<
typename T,
typename AllocatorType>
3975 template<
typename T,
typename AllocatorType>
3979 return FMath::Min(8u, LayoutParams.MaxFieldAlignment);
3982 template<
typename T,
typename AllocatorType>
3991template <
typename InElementType,
typename AllocatorType>
3997template <
typename T,
typename AllocatorType>
4013template <
typename T>
4023template <
typename T,
typename AllocatorType>
4030template <
typename T,
typename AllocatorType>
4047 template<
typename ElementType,
typename AllocatorType>
4053 using SizeType =
typename AllocatorType::SizeType;
4083 UE::Core::Private::ReallocForCopy<UE::Core::Private::GetAllocatorFlags<AllocatorType>()>(
4084 sizeof(ElementType),
4085 alignof(ElementType),
4088 A.AllocatorInstance,
4102 Ar <<
A.AddDefaulted_GetRef();
4107 Ar.
Serialize(
A.GetData(),
A.Num() *
sizeof(ElementType));
4112 Ar.
Serialize(
A.GetData(),
A.Num() *
sizeof(ElementType));
4123 Ar <<
A.AddDefaulted_GetRef();
4130 for (SizeType i=0; i<
A.ArrayNum; i++)
4136 A.SlackTrackerNumChanged();
4143template<
typename ElementType,
typename AllocatorType>
4150template<
typename InElementType,
typename InAllocatorType>
4161#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_4
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
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 ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#define ensure( InExpression)
Definition AssertionMacros.h:464
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_STATIC_ASSERT_WARN(bExpression, Message)
Definition CoreMiscDefines.h:431
EConstEval
Definition CoreMiscDefines.h:161
@ ConstEval
Definition CoreMiscDefines.h:161
UE_NODEBUG UE_FORCEINLINE_HINT TIndexedContainerIterator< ContainerType, ElementType, SizeType > operator+(SizeType Offset, TIndexedContainerIterator< ContainerType, ElementType, SizeType > RHS)
Definition Array.h:193
UE_NODEBUG FArchive & operator<<(FArchive &Ar, TArray< ElementType, AllocatorType > &A)
Definition Array.h:4144
constexpr bool TIsTArray_V
Definition Array.h:4006
uint32 GetTypeHash(const TArray< InElementType, InAllocatorType > &A)
Definition Array.h:4151
AUTORTFM_INFER UE_FORCEINLINE_HINT constexpr auto Invoke(FuncType &&Func, ArgTypes &&... Args) -> decltype(((FuncType &&) Func)((ArgTypes &&) Args...))
Definition Invoke.h:44
FORCEINLINE constexpr void DestructItem(ElementType *Element)
Definition MemoryOps.h:56
FORCEINLINE constexpr void DestructItems(ElementType *Element, SizeType Count)
Definition MemoryOps.h:81
FORCEINLINE bool CompareItems(const ElementType *A, const ElementType *B, SizeType Count)
Definition MemoryOps.h:287
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
typename TElementType< T >::Type TElementType_T
Definition ElementType.h:57
#define DECLARE_TEMPLATE_INTRINSIC_TYPE_LAYOUT(TemplatePrefix, T)
Definition MemoryLayout.h:661
const bool
Definition NetworkReplayStreaming.h:178
@ LARGE_WORLD_COORDINATES
#define UE_REQUIRES(...)
Definition Requires.h:86
auto GetNum(const TStringConversion< Converter, DefaultConversionSize > &Conversion) -> decltype(Conversion.Length())
Definition StringConv.h:808
auto GetData(const TStringConversion< Converter, DefaultConversionSize > &Conversion) -> decltype(Conversion.Get())
Definition StringConv.h:802
constexpr uint32 HashCombineFast(uint32 A, uint32 B)
Definition TypeHash.h:74
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTempIfPossible(T &&Obj) noexcept
Definition UnrealTemplate.h:538
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32 Offset
Definition VulkanMemory.cpp:4033
uint32 Size
Definition VulkanMemory.cpp:4034
Definition Archive.h:1208
virtual void Serialize(void *V, int64 Length)
Definition Archive.h:1689
UE_FORCEINLINE_HINT bool IsCooking() const
Definition Archive.h:641
bool IsByteSwapping()
Definition Archive.h:169
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
CORE_API void SetError()
Definition Archive.cpp:314
UE_FORCEINLINE_HINT bool IsSaving() const
Definition Archive.h:248
bool IsTransacting() const
Definition Archive.h:254
virtual void CountBytes(SIZE_T InNum, SIZE_T InMax)
Definition Archive.h:125
UE_FORCEINLINE_HINT bool IsError() const
Definition Archive.h:362
UE_FORCEINLINE_HINT bool IsNetArchive() const
Definition Archive.h:631
UE_FORCEINLINE_HINT FPackageFileVersion UEVer() const
Definition Archive.h:204
Definition MemoryImageWriter.h:14
CORE_API uint32 WriteBytes(const void *Data, uint32 Size)
Definition MemoryImage.cpp:2143
bool Is64BitTarget() const
Definition MemoryImageWriter.h:27
Definition MemoryImageWriter.h:78
Definition SecureHash.h:314
Definition ArrayView.h:139
UE_NODEBUG UE_FORCEINLINE_HINT SizeType FindLastByPredicate(Predicate Pred) const
Definition Array.h:1390
TArray & operator=(TArray< typename TContainerElementTypeCompatibility< ElementType >::CopyFromOtherType, AllocatorType > &&Other)
Definition Array.h:2859
SizeType Find(const ElementType &Item) const
Definition Array.h:1315
UE_FORCEINLINE_HINT SizeType AddUninitialized()
Definition Array.h:1664
UE_REWRITE const ElementType & operator[](SizeType Index) const UE_LIFETIMEBOUND
Definition Array.h:1184
TIndexedContainerIterator< TArray, ElementType, SizeType > TIterator
Definition Array.h:3347
SizeType ArrayMax
Definition Array.h:3576
void BulkSerialize(FArchive &Ar, bool bForcePerElementSerialization=false)
Definition Array.h:1593
InAllocatorType AllocatorType
Definition Array.h:677
UE_FORCEINLINE_HINT SizeType AddUnique(const ElementType &Item)
Definition Array.h:3005
void HeapRemoveAt(SizeType Index, const PREDICATE_CLASS &Predicate, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:3876
void WriteMemoryImage(FMemoryImageWriter &Writer) const
Definition Array.h:3579
SizeType Remove(const ElementType &Item)
Definition Array.h:3091
ElementType * FindByPredicate(Predicate Pred)
Definition Array.h:1471
UE_NODEBUG UE_FORCEINLINE_HINT void InsertUninitialized(SizeType Index, SizeType Count)
Definition Array.h:1786
UE_NODEBUG UE_FORCEINLINE_HINT RangedForConstIteratorType begin() const
Definition Array.h:3390
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void Append(TArray< OtherElementType, OtherAllocator > &&Source)
Definition Array.h:2436
UE_NODEBUG UE_FORCEINLINE_HINT ElementType & Last(SizeType IndexFromTheEnd=0) UE_LIFETIMEBOUND
Definition Array.h:1263
UE_NODEBUG UE_FORCEINLINE_HINT void InsertUninitialized(SizeType Index)
Definition Array.h:1782
UE_FORCEINLINE_HINT TArray(const ElementType *Ptr, SizeType Count)
Definition Array.h:715
UE_NODEBUG TIterator CreateIterator()
Definition Array.h:3355
void RemoveAt(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2083
UE_FORCEINLINE_HINT void CheckAddress(const ElementType *Addr) const
Definition Array.h:1955
UE_NODEBUG void Sort(const PREDICATE_CLASS &Predicate)
Definition Array.h:3434
TCheckedPointerIterator< const ElementType, SizeType, false > RangedForConstIteratorType
Definition Array.h:3372
UE_NODEBUG void HeapSort(const PREDICATE_CLASS &Predicate)
Definition Array.h:3922
void SetNumZeroed(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2340
void HeapPopDiscard(const PREDICATE_CLASS &Predicate, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:3808
UE_REWRITE bool operator!=(const TArray &OtherArray) const
Definition Array.h:1563
UE_NODEBUG UE_FORCEINLINE_HINT void Push(ElementType &&Item)
Definition Array.h:1224
void Reset(SizeType NewSize=0)
Definition Array.h:2246
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
void SetNumUnsafeInternal(SizeType NewNum)
Definition Array.h:2395
InElementType ElementType
Definition Array.h:676
UE_FORCEINLINE_HINT void RemoveAtSwap(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2185
UE_NODEBUG TArray & operator+=(TArray &&Other)
Definition Array.h:2525
UE_NODEBUG void VerifyHeap(const PREDICATE_CLASS &Predicate)
Definition Array.h:3791
UE_FORCEINLINE_HINT void SwapMemory(SizeType FirstIndexToSwap, SizeType SecondIndexToSwap)
Definition Array.h:3284
UE_REWRITE const ElementType * FindByKey(const KeyType &Key) const
Definition Array.h:1458
SizeType AddDefaulted()
Definition Array.h:2795
UE_NODEBUG const ElementAllocatorType & GetAllocatorInstance() const
Definition Array.h:3941
SizeType Insert(const ElementType &Item, SizeType Index)
Definition Array.h:1988
void InsertZeroed(SizeType Index)
Definition Array.h:1803
UE_NODEBUG ElementAllocatorType & GetAllocatorInstance()
Definition Array.h:3945
UE_NODEBUG static UE_FORCEINLINE_HINT constexpr uint32 GetTypeSize()
Definition Array.h:1047
TCheckedPointerIterator< const ElementType, SizeType, true > RangedForConstReverseIteratorType
Definition Array.h:3374
UE_REWRITE SizeType Max() const
Definition Array.h:1161
UE_NODEBUG UE_FORCEINLINE_HINT RangedForConstReverseIteratorType rend() const
Definition Array.h:3396
SizeType HeapPush(ElementType &&InItem, const PREDICATE_CLASS &Predicate)
Definition Array.h:3671
UE_NODEBUG UE_FORCEINLINE_HINT RangedForIteratorType end()
Definition Array.h:3391
UE_FORCEINLINE_HINT void RemoveAtSwap(SizeType Index, CountType Count, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2214
UE_NODEBUG void HeapPopDiscard(EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:3831
consteval TArray(EConstEval)
Definition Array.h:701
UE_NODEBUG bool operator==(FIntrusiveUnsetOptionalState Tag) const
Definition Array.h:1014
bool Contains(const ComparisonType &Item) const
Definition Array.h:1518
void InsertDefaulted(SizeType Index)
Definition Array.h:1841
UE_NODEBUG UE_FORCEINLINE_HINT RangedForConstIteratorType end() const
Definition Array.h:3392
SizeType RemoveSingleSwap(const ElementType &Item, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:3211
UE_FORCEINLINE_HINT TArray(TArray< OtherElementType, OtherAllocator > &&Other)
Definition Array.h:955
TArray(TArray< OtherElementType, AllocatorType > &&Other, SizeType ExtraSlack)
Definition Array.h:971
SizeType RemoveAllSwap(const PREDICATE_CLASS &Predicate, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:3163
typename InAllocatorType::SizeType SizeType
Definition Array.h:675
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(const ElementType &Item)
Definition Array.h:2709
UE_REWRITE const ElementType & Top() const UE_LIFETIMEBOUND
Definition Array.h:1252
UE_FORCEINLINE_HINT void RemoveAt(SizeType Index, CountType Count, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2109
UE_NODEBUG SizeType HeapPush(const ElementType &InItem)
Definition Array.h:3730
UE_REWRITE const ElementType * GetData() const UE_LIFETIMEBOUND
Definition Array.h:1037
UE_REWRITE bool IsEmpty() const
Definition Array.h:1133
UE_FORCEINLINE_HINT SizeType Emplace(ArgsType &&... Args)
Definition Array.h:2561
static void AppendHash(const FPlatformTypeLayoutParameters &LayoutParams, FSHA1 &Hasher)
Definition Array.h:3610
void InsertDefaulted(SizeType Index, SizeType Count)
Definition Array.h:1846
UE_FORCEINLINE_HINT ElementType & Emplace_GetRef(ArgsType &&... Args) UE_LIFETIMEBOUND
Definition Array.h:2613
ElementType & InsertDefaulted_GetRef(SizeType Index) UE_LIFETIMEBOUND
Definition Array.h:1860
void HeapPop(ElementType &OutItem, const PREDICATE_CLASS &Predicate, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:3748
SizeType FindLast(const ElementType &Item) const
Definition Array.h:1348
TIndexedContainerIterator< const TArray, const ElementType, SizeType > TConstIterator
Definition Array.h:3348
ElementType & Insert_GetRef(const ElementType &Item, SizeType Index) UE_LIFETIMEBOUND
Definition Array.h:2028
SizeType RemoveSwap(const ElementType &Item, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:3244
UE_FORCEINLINE_HINT void RangeCheck(SizeType Index, SizeType Count) const
Definition Array.h:1105
UE_NODEBUG void Heapify()
Definition Array.h:3654
UE_NODEBUG UE_FORCEINLINE_HINT SIZE_T NumBytes() const
Definition Array.h:1150
void Append(RangeType &&Source)
Definition Array.h:2470
UE_FORCEINLINE_HINT TArray(TArray &&Other)
Definition Array.h:940
void SetNum(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2308
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
UE_NODEBUG UE_FORCEINLINE_HINT bool IsValidIndex(SizeType Index) const
Definition Array.h:1122
void Init(const ElementType &Element, SizeType Number)
Definition Array.h:3043
SizeType IndexOfByKey(const KeyType &Key) const
Definition Array.h:1403
UE_FORCEINLINE_HINT TArray(const TArray< OtherElementType, OtherAllocator > &Other)
Definition Array.h:752
UE_NODEBUG void HeapPop(ElementType &OutItem, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:3775
UE_NODEBUG TArray & operator+=(std::initializer_list< ElementType > InitList)
Definition Array.h:2548
void Append(const TArray< OtherElementType, OtherAllocatorType > &Source)
Definition Array.h:2412
TArray & operator=(const TArray< ElementType, OtherAllocatorType > &Other)
Definition Array.h:804
UE_NODEBUG UE_FORCEINLINE_HINT RangedForIteratorType begin()
Definition Array.h:3389
SizeType AddDefaulted(SizeType Count)
Definition Array.h:2801
SizeType FindLastByPredicate(Predicate Pred, SizeType Count) const
Definition Array.h:1369
SizeType AddZeroed()
Definition Array.h:2755
UE_NODEBUG TArray & operator+=(const TArray &Other)
Definition Array.h:2537
UE_FORCEINLINE_HINT ElementType & EmplaceAt_GetRef(SizeType Index, ArgsType &&... Args) UE_LIFETIMEBOUND
Definition Array.h:2679
UE_NODEBUG bool operator==(const TArray &OtherArray) const
Definition Array.h:1549
UE_NODEBUG void HeapRemoveAt(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:3902
TArray & operator=(const TArray< typename TContainerElementTypeCompatibility< ElementType >::CopyFromOtherType, OtherAllocator > &Other)
Definition Array.h:2879
UE_NODEBUG UE_FORCEINLINE_HINT void Heapify(const PREDICATE_CLASS &Predicate)
Definition Array.h:3640
SizeType RemoveAll(const PREDICATE_CLASS &Predicate)
Definition Array.h:3108
UE_NODEBUG UE_FORCEINLINE_HINT bool Find(const ElementType &Item, SizeType &Index) const
Definition Array.h:1302
UE_FORCEINLINE_HINT void RangeCheck(SizeType Index) const
Definition Array.h:1088
UE_NODEBUG UE_FORCEINLINE_HINT RangedForReverseIteratorType rbegin()
Definition Array.h:3393
UE_NODEBUG void CountBytes(FArchive &Ar) const
Definition Array.h:1649
UE_NODEBUG UE_FORCEINLINE_HINT SIZE_T GetAllocatedSize(void) const
Definition Array.h:1059
UE_NODEBUG void StableSort()
Definition Array.h:3450
TArray & operator=(const TArray &Other)
Definition Array.h:817
TArray< ElementType > FilterByPredicate(Predicate Pred) const
Definition Array.h:1498
std::conditional_t< AllocatorType::NeedsElementType, typename AllocatorType::template ForElementType< ElementType >, typename AllocatorType::ForAnyElementType > ElementAllocatorType
Definition Array.h:687
UE_FORCEINLINE_HINT void Swap(SizeType FirstIndexToSwap, SizeType SecondIndexToSwap)
Definition Array.h:3300
void Append(const typename TContainerElementTypeCompatibility< ElementType >::CopyFromOtherType *Ptr, SizeType Count)
Definition Array.h:2953
UE_FORCEINLINE_HINT constexpr TArray()
Definition Array.h:694
ElementType Pop(EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:1196
SizeType AddZeroed(SizeType Count)
Definition Array.h:2761
UE_NODEBUG SizeType HeapPush(ElementType &&InItem)
Definition Array.h:3714
SizeType RemoveSingle(const ElementType &Item)
Definition Array.h:3060
UE_FORCEINLINE_HINT SizeType AddUninitialized(SizeType Count)
Definition Array.h:1711
UE_REWRITE const ElementType & Last(SizeType IndexFromTheEnd=0) const UE_LIFETIMEBOUND
Definition Array.h:1268
UE_NODEBUG UE_FORCEINLINE_HINT SizeType GetSlack() const
Definition Array.h:1069
void SetNumUninitialized(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2369
UE_NODEBUG ElementType & HeapTop() UE_LIFETIMEBOUND
Definition Array.h:3858
void ToString(const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext) const
Definition Array.h:3618
TArray(const TArrayView< OtherElementType, OtherSizeType > &Other)
friend class TArray
Array that allocates elements on the heap.
Definition Array.h:672
bool FindItemByClass(SearchType **Item=nullptr, SizeType *ItemIndex=nullptr, SizeType StartIndex=0) const
Definition Array.h:3325
ElementType & AddDefaulted_GetRef() UE_LIFETIMEBOUND
Definition Array.h:2815
UE_NODEBUG TArray(FIntrusiveUnsetOptionalState Tag)
Definition Array.h:1008
UE_FORCEINLINE_HINT TArray(const TArray &Other)
Definition Array.h:762
TArray(std::initializer_list< InElementType > InitList)
Definition Array.h:734
SizeType IndexOfByPredicate(Predicate Pred) const
Definition Array.h:1423
SizeType Insert(TArray< ElementType, OtherAllocator > &&Items, const SizeType InIndex)
Definition Array.h:1913
UE_FORCEINLINE_HINT void Shrink()
Definition Array.h:1278
UE_NODEBUG const ElementType & HeapTop() const UE_LIFETIMEBOUND
Definition Array.h:3848
UE_NODEBUG UE_FORCEINLINE_HINT RangedForReverseIteratorType rend()
Definition Array.h:3395
UE_FORCEINLINE_HINT SizeType AddUnique(ElementType &&Item)
Definition Array.h:2993
void CopyUnfrozen(const FMemoryUnfreezeContent &Context, void *Dst) const
Definition Array.h:3596
ElementType & InsertZeroed_GetRef(SizeType Index) UE_LIFETIMEBOUND
Definition Array.h:1825
~TArray()
Definition Array.h:992
UE_FORCEINLINE_HINT TArray(const TArray &Other, SizeType ExtraSlack)
Definition Array.h:774
ElementAllocatorType AllocatorInstance
Definition Array.h:3574
ElementType * FindByKey(const KeyType &Key)
Definition Array.h:1445
TArray & operator=(const TArrayView< OtherElementType, OtherSizeType > &Other)
SizeType Insert(ElementType &&Item, SizeType Index)
Definition Array.h:1969
void Append(const ElementType *Ptr, SizeType Count)
Definition Array.h:2495
UE_REWRITE const ElementType * FindByPredicate(Predicate Pred) const
Definition Array.h:1484
TArray & operator=(TArray &&Other)
Definition Array.h:981
UE_NODEBUG void StableSort(const PREDICATE_CLASS &Predicate)
Definition Array.h:3468
static constexpr bool bHasIntrusiveUnsetOptionalState
Definition Array.h:1005
UE_FORCEINLINE_HINT void EmplaceAt(SizeType Index, ArgsType &&... Args)
Definition Array.h:2665
void InsertZeroed(SizeType Index, SizeType Count)
Definition Array.h:1808
UE_NODEBUG UE_FORCEINLINE_HINT bool FindLast(const ElementType &Item, SizeType &Index) const
Definition Array.h:1336
TArray & operator=(std::initializer_list< InElementType > InitList)
Definition Array.h:785
SizeType ArrayNum
Definition Array.h:3575
UE_NODEBUG UE_FORCEINLINE_HINT ElementType & Top() UE_LIFETIMEBOUND
Definition Array.h:1248
UE_NODEBUG UE_FORCEINLINE_HINT ElementType & Add_GetRef(ElementType &&Item) UE_LIFETIMEBOUND
Definition Array.h:2724
ElementType & Insert_GetRef(ElementType &&Item, SizeType Index) UE_LIFETIMEBOUND
Definition Array.h:2008
TCheckedPointerIterator< ElementType, SizeType, true > RangedForReverseIteratorType
Definition Array.h:3373
SizeType Insert(std::initializer_list< ElementType > InitList, const SizeType InIndex)
Definition Array.h:1875
UE_NODEBUG UE_FORCEINLINE_HINT ElementType & operator[](SizeType Index) UE_LIFETIMEBOUND
Definition Array.h:1171
UE_NODEBUG UE_FORCEINLINE_HINT void CheckInvariants() const
Definition Array.h:1078
void Empty(SizeType Slack=0)
Definition Array.h:2273
UE_NODEBUG UE_FORCEINLINE_HINT void Push(const ElementType &Item)
Definition Array.h:1237
SizeType Insert(const TArray< typename TContainerElementTypeCompatibility< ElementType >::CopyFromOtherType, OtherAllocator > &Items, const SizeType InIndex)
Definition Array.h:2900
UE_FORCEINLINE_HINT void Append(std::initializer_list< ElementType > InitList)
Definition Array.h:2509
SizeType HeapPush(const ElementType &InItem, const PREDICATE_CLASS &Predicate)
Definition Array.h:3693
UE_NODEBUG void Sort()
Definition Array.h:3418
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
UE_NODEBUG UE_FORCEINLINE_HINT bool ContainsByPredicate(Predicate Pred) const
Definition Array.h:1538
ElementType & AddZeroed_GetRef() UE_LIFETIMEBOUND
Definition Array.h:2779
UE_NODEBUG UE_FORCEINLINE_HINT ElementType & Add_GetRef(const ElementType &Item) UE_LIFETIMEBOUND
Definition Array.h:2737
TCheckedPointerIterator< ElementType, SizeType, false > RangedForIteratorType
Definition Array.h:3371
SizeType Insert(TArray< typename TContainerElementTypeCompatibility< ElementType >::CopyFromOtherType, OtherAllocator > &&Items, const SizeType InIndex)
Definition Array.h:2925
SizeType Insert(const ElementType *Ptr, SizeType Count, SizeType Index)
Definition Array.h:1937
UE_NODEBUG TConstIterator CreateConstIterator() const
Definition Array.h:3365
UE_NODEBUG UE_FORCEINLINE_HINT RangedForConstReverseIteratorType rbegin() const
Definition Array.h:3394
UE_NODEBUG void HeapSort()
Definition Array.h:3936
SizeType Insert(const TArray< ElementType, OtherAllocator > &Items, const SizeType InIndex)
Definition Array.h:1893
UE_NODEBUG TIndexedContainerIterator & operator-=(SizeType Offset)
Definition Array.h:111
UE_NODEBUG UE_FORCEINLINE_HINT bool operator==(const TIndexedContainerIterator &Rhs) const
Definition Array.h:174
UE_NODEBUG UE_FORCEINLINE_HINT ElementType & operator*() const
Definition Array.h:122
UE_NODEBUG SizeType GetIndex() const
Definition Array.h:139
UE_NODEBUG void RemoveCurrent()
Definition Array.h:157
UE_NODEBUG TIndexedContainerIterator operator-(SizeType Offset) const
Definition Array.h:116
UE_NODEBUG TIndexedContainerIterator operator--(int)
Definition Array.h:91
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * operator->() const
Definition Array.h:127
UE_NODEBUG void RemoveCurrentSwap()
Definition Array.h:168
UE_NODEBUG TIndexedContainerIterator & operator+=(SizeType Offset)
Definition Array.h:99
UE_NODEBUG TIndexedContainerIterator(ContainerType &InContainer, SizeType StartIndex=0)
Definition Array.h:66
UE_NODEBUG void SetToEnd()
Definition Array.h:151
UE_NODEBUG void Reset()
Definition Array.h:145
UE_NODEBUG TIndexedContainerIterator & operator++()
Definition Array.h:73
UE_NODEBUG TIndexedContainerIterator operator++(int)
Definition Array.h:78
UE_NODEBUG TIndexedContainerIterator operator+(SizeType Offset) const
Definition Array.h:105
UE_NODEBUG TIndexedContainerIterator & operator--()
Definition Array.h:86
UE_NODEBUG UE_FORCEINLINE_HINT bool operator!=(const TIndexedContainerIterator &Rhs) const
Definition Array.h:179
Definition IndirectArray.h:20
IndexType HeapSiftUp(RangeValueType *Heap, IndexType RootIndex, IndexType NodeIndex, const ProjectionType &InProj, const PredicateType &Predicate)
Definition BinaryHeap.h:109
void HeapSiftDown(RangeValueType *Heap, IndexType Index, const IndexType Count, const ProjectionType &InProj, const PredicateType &Predicate)
Definition BinaryHeap.h:59
UE_REWRITE void Sort(RangeType &&Range)
Definition Sort.h:16
UE_REWRITE void Heapify(RangeType &&Range)
Definition Heapify.h:20
UE_REWRITE bool IsHeap(const RangeType &Range)
Definition IsHeap.h:50
UE_REWRITE void StableSort(RangeType &&Range)
Definition StableSort.h:125
UE_REWRITE void HeapSort(RangeType &&Range)
Definition HeapSort.h:18
void ArrayMax(const TArrayView< const float > &InView1, const TArrayView< const float > &InView2, const TArrayView< float > &OutView)
Definition FloatArrayMath.cpp:740
GeometryCollection::Facades::FMuscleActivationData Data
Definition MuscleActivationConstraints.h:15
CORE_API uint32 AppendHashForNameAndSize(const TCHAR *Name, uint32 Size, FSHA1 &Hasher)
Definition MemoryImage.cpp:568
UE_NODEBUG void IntrinsicWriteMemoryImage(FMemoryImageWriter &Writer, const TArray< T, AllocatorType > &Object, const FTypeLayoutDesc &)
Definition Array.h:3957
CORE_API uint32 AppendHash(const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FSHA1 &Hasher)
Definition MemoryImage.cpp:864
UE_NODEBUG uint32 IntrinsicUnfrozenCopy(const FMemoryUnfreezeContent &Context, const TArray< T, AllocatorType > &Object, void *OutDst)
Definition Array.h:3963
UE_NODEBUG void IntrinsicToString(const TArray< T, AllocatorType > &Object, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FMemoryToStringContext &OutContext)
Definition Array.h:3983
UE_NODEBUG uint32 IntrinsicGetTargetAlignment(const TArray< T, AllocatorType > *DummyObject, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams)
Definition Array.h:3976
UE_NODEBUG uint32 IntrinsicAppendHash(const TArray< T, AllocatorType > *DummyObject, const FTypeLayoutDesc &TypeDesc, const FPlatformTypeLayoutParameters &LayoutParams, FSHA1 &Hasher)
Definition Array.h:3970
implementation
Definition PlayInEditorLoadingScope.h:8
UE_STRING_CLASS Result(Forward< LhsType >(Lhs), RhsLen)
Definition String.cpp.inl:732
U16 Index
Definition radfft.cpp:71
Definition IdentityFunctor.h:11
Definition IntrusiveUnsetOptionalState.h:71
Definition MemoryLayout.h:51
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
Definition MemoryLayout.h:108
const TCHAR * Name
Definition MemoryLayout.h:127
Definition ContainerAllocationPolicies.h:256
static FArchive & Serialize(FArchive &Ar, TArray< ElementType, AllocatorType > &A)
Definition Array.h:4048
@ Value
Definition Array.h:46
Definition ContainerAllocationPolicies.h:261
UE_NODEBUG TCheckedPointerIterator(const SizeType &InNum, ElementType *InPtr)
Definition Array.h:212
UE_NODEBUG FORCEINLINE bool operator==(const TCheckedPointerIterator &Rhs) const
Definition Array.h:280
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * operator->() const
Definition Array.h:219
UE_NODEBUG UE_FORCEINLINE_HINT TCheckedPointerIterator & operator++()
Definition Array.h:243
UE_NODEBUG UE_FORCEINLINE_HINT ElementType & operator*() const
Definition Array.h:231
UE_NODEBUG UE_FORCEINLINE_HINT TCheckedPointerIterator & operator--()
Definition Array.h:256
UE_NODEBUG UE_FORCEINLINE_HINT bool operator!=(const TCheckedPointerIterator &Rhs) const
Definition Array.h:269
Definition ContainerElementTypeCompatibility.h:15
InElementType CopyFromOtherType
Definition ContainerElementTypeCompatibility.h:17
static constexpr void CopyingFromOtherType()
Definition ContainerElementTypeCompatibility.h:29
UE_NODEBUG UE_FORCEINLINE_HINT ElementType & operator*() const
Definition Array.h:302
UE_NODEBUG UE_FORCEINLINE_HINT TDereferencingIterator & operator++()
Definition Array.h:307
UE_NODEBUG TDereferencingIterator(IteratorType InIter)
Definition Array.h:297
UE_NODEBUG UE_FORCEINLINE_HINT bool operator!=(const TDereferencingIterator &Rhs) const
Definition Array.h:313
Definition MemoryLayout.h:626
Definition UnrealTypeTraits.h:410
Definition IsContiguousContainer.h:16
static constexpr bool Value
Definition IsContiguousContainer.h:20
@ Value
Definition Array.h:4016
Definition IsUECoreType.h:19
Definition UnrealTypeTraits.h:172
Definition NumericLimits.h:41
Definition ReverseIterate.h:13