UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SharedPointerArray.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
9
10#include <initializer_list>
11#include <type_traits>
12
13namespace uLang
14{
15
19template<typename InElementType, bool AllowNull, typename InElementAllocatorType, typename... RawAllocatorArgsType>
21{
22 template <typename OtherElementType, bool OtherAllowNull, typename OtherElementAllocatorType, typename... OtherRawAllocatorArgsType>
23 friend class TSPtrArrayG;
24
25public:
26
29 using PointerType = TSPtrG<ElementType, AllowNull, typename InElementAllocatorType::RawAllocatorType, RawAllocatorArgsType...>;
31
39
43 template<typename OtherElementType, bool OtherAllowNull, typename = typename TEnableIf<std::is_convertible_v<OtherElementType*, InElementType*> && (AllowNull || !OtherAllowNull)>::Type>
53
59 template<typename OtherElementType, bool OtherAllowNull, typename = typename TEnableIf<std::is_convertible_v<OtherElementType*, InElementType*> && (AllowNull || !OtherAllowNull)>::Type>
66
78
86 template<typename OtherElementType, bool OtherAllowNull, typename = typename TEnableIf<std::is_convertible_v<OtherElementType*, InElementType*> && (AllowNull || !OtherAllowNull)>::Type>
93
100 template<typename OtherElementType, bool OtherAllowNull, typename = typename TEnableIf<std::is_convertible_v<OtherElementType*, InElementType*> && (AllowNull || !OtherAllowNull)>::Type>
111
119 {
120 if (this != &Other)
121 {
122 _PointerStorage = Other._PointerStorage;
123 ReferenceAll();
125 }
126 return *this;
127 }
128
134 template<typename OtherElementType, bool OtherAllowNull, typename = typename TEnableIf<std::is_convertible_v<OtherElementType*, InElementType*> && (AllowNull || !OtherAllowNull)>::Type>
140
151
159 template<class OtherElementType, bool OtherAllowNull, typename = typename TEnableIf<std::is_convertible_v<OtherElementType*, InElementType*> && (AllowNull || !OtherAllowNull)>::Type>
165
171 template<class OtherElementType, bool OtherAllowNull, typename = typename TEnableIf<std::is_convertible_v<OtherElementType*, InElementType*> && (AllowNull || !OtherAllowNull)>::Type>
182
189 {
190 if (this != &Other)
191 {
195 }
196 return *this;
197 }
198
201 {
203 }
204
211 {
212 return _PointerStorage.GetSlack();
213 }
214
225
233 {
234 return _PointerStorage.Num();
235 }
236
244 {
245 return _PointerStorage.Max();
246 }
247
255 {
256 return _PointerStorage.IsEmpty();
257 }
258
266 {
267 return _PointerStorage.IsFilled();
268 }
269
277
284 ULANG_FORCEINLINE PointerType Pop(bool bAllowShrinking = true)
285 {
287 if (Item)
288 {
289 Item->Dereference();
290 }
291 return Item;
292 }
293
300 {
301 if (Item)
302 {
303 Item->Reference();
304 }
305 _PointerStorage.Push(Item.Get());
307 }
308
319
330
341
351
361 {
362 return _PointerStorage.Find(const_cast<ElementType*>(Item), Index);
363 }
365 {
366 return Find(Item.Get(), Index);
367 }
368
369
378 {
379 return _PointerStorage.Find(const_cast<ElementType*>(Item));
380 }
382 {
383 return Find(Item.Get());
384 }
385
395 {
396 return _PointerStorage.FindLast(Item.Get(), Index);
397 }
398
406 {
407 return _PointerStorage.FindLast(Item.Get());
408 }
409
417 template <typename Predicate>
422
429 template <typename Predicate>
434
442 template <typename KeyType>
443 int32_t IndexOfByKey(const KeyType& Key) const
444 {
445 return _PointerStorage.IndexOfByPredicate([=](ElementType * Item) -> bool { return *Item == Key; });
446 }
447
454 template <typename Predicate>
456 {
458 }
459
468 template <typename KeyType>
470 {
471 ElementType * const * Element = _PointerStorage.FindByPredicate([=](ElementType * Item) -> bool { return *Item == Key; });
472 if (Element)
473 {
474 return PointerType(*Element, _PointerStorage.GetRawAllocator());
475 }
476
478 }
479
487 template <typename Predicate>
489 {
490 ElementType * const * Element = _PointerStorage.FindByPredicate(Pred);
491 if (Element)
492 {
493 return PointerType(*Element, _PointerStorage.GetRawAllocator());
494 }
495
497 }
498
505 bool Contains(const PointerType& Pointer) const
506 {
507 return _PointerStorage.FindByPredicate([=](ElementType * Item) -> bool { return Item == Pointer.Get(); }) != nullptr;
508 }
509
516 template <typename ComparisonType>
517 bool ContainsByKey(const ComparisonType& Key) const
518 {
519 return _PointerStorage.FindByPredicate([=](ElementType * Item) -> bool { return *Item == Key; }) != nullptr;
520 }
521
529 template <typename Predicate>
534
552
561 {
563 ReferenceRange(InIndex, InIndex + Items.Num());
565 return InIndex;
566 }
567
576 {
578 return _PointerStorage.Insert(ForwardArg<PointerStorageType>(Items._PointerStorage), InIndex);
579 }
580
590 {
591 if (Item)
592 {
593 Item->Reference();
594 }
596 return _PointerStorage.Insert(Item.Get(), Index);
597 }
598
609 {
612 if (RemovedItem)
613 {
614 // Decrement the reference counter for the pointer removed from the array.
615 RemovedItem->Dereference();
616 }
617 return uLang::Move(RemovedItem);
618 }
619
628 template <typename CountType>
629 ULANG_FORCEINLINE void RemoveAt(int32_t Index, CountType Count, bool bAllowShrinking = true)
630 {
632 _PointerStorage.RemoveAt(Index, Count, bAllowShrinking);
633 }
634
652
665 template <typename CountType>
666 ULANG_FORCEINLINE void RemoveAtSwap(int32_t Index, CountType Count, bool bAllowShrinking = true)
667 {
669 _PointerStorage.RemoveAtSwap(Index, Count, bAllowShrinking);
670 }
671
681 {
682 if (Item)
683 {
684 Item->Reference();
685 }
688 _PointerStorage[Index] = Item.Get();
689 return Index;
690 }
691
698 void Reset(int32_t NewSize = 0)
699 {
701 _PointerStorage.Reset(NewSize);
702 }
703
709 void Empty(int32_t Slack = 0)
710 {
712 _PointerStorage.Empty(Slack);
713 }
714
720 void SetNumZeroed(int32_t NewNum, bool bAllowShrinking = true)
721 {
722 if (NewNum < Num())
723 {
725 }
726 _PointerStorage.SetNumZeroed(NewNum, bAllowShrinking);
727 }
728
738 {
739 Source.ReferenceAll();
740 _PointerStorage.Append(Source._PointerStorage);
742 }
743
755
769
777 {
778 Append(Other);
779 return *this;
780 }
781
788 template <typename... CtorArgsType>
790 {
791 ElementType * Item = new(_PointerStorage.GetRawAllocator()) ElementType(uLang::ForwardArg<CtorArgsType>(CtorArgs)...);
792 Item->Reference();
794 return _PointerStorage.Emplace(Item);
795 }
796
803 template <typename... CtorArgsType>
805 {
806 ElementType * Item = new(_PointerStorage.GetRawAllocator()) ElementType(uLang::ForwardArg<CtorArgsType>(CtorArgs)...);
807 Item->Reference();
810 }
811
822 {
823 if (Item)
824 {
825 Item->Reference();
826 }
828 return _PointerStorage.Emplace(Item.Get());
829 }
830
848
857 {
860 if (Item && _PointerStorage.Num() > NumPrev)
861 {
862 Item->Reference();
863 }
865 return Index;
866 }
867
878
888 {
890 if (Num)
891 {
892 ULANG_ENSUREF(!Item->Dereference(), "Item was passed in so there must be at least one reference left after this.");
893 }
894 return Num;
895 }
896
906 {
908 for (int32_t Count = Num; Count; --Count)
909 {
910 ULANG_ENSUREF(!Item->Dereference(), "Item was passed in so there must be at least one reference left after this.");
911 }
912 return Num;
913 }
914
923 template <typename Predicate>
924 int32_t RemoveAll(const Predicate& Pred)
925 {
926 const typename ElementAllocatorType::RawAllocatorType & RawAllocator = _PointerStorage.GetRawAllocator();
927 return _PointerStorage.RemoveAll([&](ElementType* Item) -> bool {
928 bool RemoveIt = Pred(Item);
929 if (RemoveIt && Item->Dereference())
930 {
931 Item->~ElementType();
932 RawAllocator.Deallocate(Item);
933 }
934 return RemoveIt;
935 });
936 }
937
944 template <class Predicate>
945 void RemoveAllSwap(const Predicate& Pred, bool bAllowShrinking = true)
946 {
947 const typename ElementAllocatorType::RawAllocatorType & RawAllocator = _PointerStorage.GetRawAllocator();
948 return _PointerStorage.RemoveAllSwap([&](ElementType* Item) -> bool {
949 bool RemoveIt = Pred(Item);
950 if (RemoveIt && Item->Dereference())
951 {
952 Item->~ElementType();
953 RawAllocator.Deallocate(Item);
954 }
955 return RemoveIt;
956 });
957 }
958
968 int32_t RemoveSingleSwap(const PointerType& Item, bool bAllowShrinking = true)
969 {
971 if (Num)
972 {
973 ULANG_ENSUREF(!Item->Dereference(), "Item was passed in so there must be at least one reference left after this.");
974 }
975 return Num;
976 }
977
989 {
991 for (int32_t Count = Num; Count; --Count)
992 {
993 ULANG_ENSUREF(!Item->Dereference(), "Item was passed in so there must be at least one reference left after this.");
994 }
995 return Num;
996 }
997
1005
1011 template <class PredicateType>
1012 void Sort(const PredicateType& Predicate)
1013 {
1014 Algo::Sort( _PointerStorage, Predicate );
1015 }
1016
1024
1025public:
1026
1032 {
1033 public:
1034 ULANG_FORCEINLINE Iterator() : _Item(nullptr) {} //-V730
1035 ULANG_FORCEINLINE Iterator(ElementType * const * Item, const typename InElementAllocatorType::RawAllocatorType & Allocator) : _Item(Item) { Ptr()._Allocator = Allocator; } //-V730
1039 ULANG_FORCEINLINE bool operator==(const Iterator & Other) const { return _Item == Other._Item; }
1040 ULANG_FORCEINLINE bool operator!=(const Iterator & Other) const { return _Item != Other._Item; }
1042 ULANG_FORCEINLINE Iterator operator++(int) { Iterator Temp = *this; ++*this; return Temp; }
1044 ULANG_FORCEINLINE Iterator operator--(int) { Iterator Temp = *this; --*this; return Temp; }
1045 friend ULANG_FORCEINLINE Iterator operator+(const Iterator& Left, int32_t Right) { Iterator Temp = Left; Temp._Item += Right; return Temp; }
1046 friend ULANG_FORCEINLINE Iterator operator+(int32_t Left, const Iterator& Right) { Iterator Temp = Right; Temp._Item += Left; return Temp; }
1047 friend ULANG_FORCEINLINE int32_t operator-(const Iterator& Left, const Iterator& Right) { return static_cast<int32_t>(Left._Item - Right._Item); }
1048
1049 protected:
1051
1053 TTypeCompatibleBytes<PointerType> _DummyPtr; // Dummy shared pointer to avoid copy & unnecessary reference/dereference of object
1054 };
1055
1060
1061protected:
1062
1065 {
1066 _DereferenceFunc = [](ElementType * Item, const typename ElementAllocatorType::RawAllocatorType & Allocator)
1067 {
1068 if (Item && Item->Dereference())
1069 {
1070 // No references left: Delete the element
1071 Item->~ElementType();
1072 Allocator.Deallocate(Item);
1073 }
1074 };
1075 }
1076
1079 {
1080 // Call the function set by EnableDereference() above
1081 (*_DereferenceFunc)(_PointerStorage[Index], _PointerStorage.GetRawAllocator());
1082 }
1083
1086 {
1087 for (int32_t Index = BeginIndex; Index < EndIndex; ++Index)
1088 {
1090 if (Item)
1091 {
1092 Item->Reference();
1093 }
1094 }
1095 }
1096
1099 {
1100 for (int32_t Index = BeginIndex; Index < EndIndex; ++Index)
1101 {
1103 }
1104 }
1105
1111
1117
1119
1124 using DereferenceFuncType = void(*)(ElementType *, const typename ElementAllocatorType::RawAllocatorType &);
1126};
1127
1129template<typename ElementType>
1131
1133template<typename ElementType>
1135
1137template<typename ElementType>
1139
1141template<typename ElementType>
1143
1144
1145template <typename ElementType, bool AllowNull, typename ElementAllocatorType, typename... RawAllocatorArgsType>
1150
1151template <typename ElementType, bool AllowNull, typename ElementAllocatorType, typename... RawAllocatorArgsType>
1152struct TContainerTraits<TSPtrArrayG<ElementType, AllowNull, ElementAllocatorType, RawAllocatorArgsType...>> : public TContainerTraitsBase<TSPtrArrayG<ElementType, AllowNull, ElementAllocatorType, RawAllocatorArgsType...>>
1153{
1154 static_assert(TAllocatorTraits<ElementAllocatorType>::SupportsMove, "TSPtrArray no longer supports move-unaware allocators");
1156};
1157
1158template <typename ElementType, bool AllowNull, typename ElementAllocatorType, typename... RawAllocatorArgsType>
1159struct TIsContiguousContainer<TSPtrArrayG<ElementType, AllowNull, ElementAllocatorType, RawAllocatorArgsType...>>
1160{
1161 enum { Value = true };
1162};
1163
1164}
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define ULANG_ENSUREF(expr, format,...)
Definition Common.h:292
#define ULANG_ASSERT(expr)
Definition Common.h:285
#define ULANG_FORCEINLINE
Definition Common.h:188
Definition Allocator.h:35
ULANG_FORCEINLINE void Shrink()
Definition Array.h:562
ULANG_FORCEINLINE int32_t Emplace(ArgsType &&... Args)
Definition Array.h:1527
ULANG_FORCEINLINE ElementType & Last(int32_t IndexFromTheEnd=0)
Definition Array.h:537
ULANG_FORCEINLINE int32_t Max() const
Definition Array.h:413
ULANG_FORCEINLINE const ElementType * FindByPredicate(Predicate Pred) const
Definition Array.h:757
int32_t Remove(const OtherElementType &Item)
Definition Array.h:1814
int32_t RemoveSwap(const ElementType &Item)
Definition Array.h:1927
ULANG_FORCEINLINE void EmplaceAt(int32_t Index, ArgsType &&... Args)
Definition Array.h:1556
void SetNumZeroed(int32_t NewNum, bool bAllowShrinking=true)
Definition Array.h:1360
void Empty(int32_t Slack=0)
Definition Array.h:1322
ULANG_FORCEINLINE bool ContainsByPredicate(Predicate Pred) const
Definition Array.h:831
ULANG_FORCEINLINE bool Find(const ElementType &Item, int32_t &Index) const
Definition Array.h:579
ULANG_FORCEINLINE void RemoveAt(int32_t Index)
Definition Array.h:1188
void RemoveAllSwap(const PREDICATE_CLASS &Predicate, bool bAllowShrinking=true)
Definition Array.h:1879
ULANG_FORCEINLINE ElementType * begin()
Definition Array.h:1948
void InsertZeroed(int32_t Index, int32_t Count=1)
Definition Array.h:921
int32_t AddZeroed(int32_t Count=1)
Definition Array.h:1646
ULANG_FORCEINLINE void Push(ElementType &&Item)
Definition Array.h:489
int32_t RemoveSingleSwap(const ElementType &Item, bool bAllowShrinking=true)
Definition Array.h:1903
void Reset(int32_t NewSize=0)
Definition Array.h:1303
ULANG_FORCEINLINE bool IsEmpty() const
Definition Array.h:430
ULANG_FORCEINLINE bool IsFilled() const
Definition Array.h:441
ULANG_FORCEINLINE ElementType * GetData()
Definition Array.h:313
ULANG_FORCEINLINE int32_t GetSlack() const
Definition Array.h:355
ULANG_FORCEINLINE void RemoveAtSwap(int32_t Index)
Definition Array.h:1252
int32_t RemoveSingle(const ElementType &Item)
Definition Array.h:1784
int32_t Insert(std::initializer_list< ElementType > InitList, const int32_t InIndex)
Definition Array.h:986
void Append(const TArrayG< ElementType, OtherElementAllocatorType, OtherRawAllocatorArgsType... > &Source)
Definition Array.h:1408
ULANG_FORCEINLINE ElementType * end()
Definition Array.h:1950
ULANG_FORCEINLINE ElementType & Top()
Definition Array.h:513
ULANG_FORCEINLINE ElementType Pop(bool bAllowShrinking=true)
Definition Array.h:476
ULANG_FORCEINLINE int32_t AddUnique(ElementType &&Item)
Definition Array.h:1736
ULANG_FORCEINLINE bool FindLast(const ElementType &Item, int32_t &Index) const
Definition Array.h:613
ULANG_FORCEINLINE const ElementAllocatorType::RawAllocatorType & GetRawAllocator() const
Definition Array.h:419
int32_t IndexOfByPredicate(Predicate Pred) const
Definition Array.h:700
int32_t FindLastByPredicate(Predicate Pred, int32_t Count) const
Definition Array.h:646
ULANG_FORCEINLINE void Reserve(int32_t Number)
Definition Array.h:1753
ULANG_FORCEINLINE bool IsValidIndex(int32_t Index) const
Definition Array.h:391
int32_t RemoveAll(const PREDICATE_CLASS &Predicate)
Definition Array.h:1831
ULANG_FORCEINLINE int32_t Num() const
Definition Array.h:402
Definition SharedPointerArray.h:1032
ULANG_FORCEINLINE const ElementType * operator->() const
Definition SharedPointerArray.h:1038
ULANG_FORCEINLINE bool operator==(const Iterator &Other) const
Definition SharedPointerArray.h:1039
TTypeCompatibleBytes< PointerType > _DummyPtr
Definition SharedPointerArray.h:1053
ULANG_FORCEINLINE ~Iterator()=default
friend ULANG_FORCEINLINE Iterator operator+(const Iterator &Left, int32_t Right)
Definition SharedPointerArray.h:1045
ULANG_FORCEINLINE const PointerType & operator*() const
Definition SharedPointerArray.h:1037
ULANG_FORCEINLINE Iterator operator--(int)
Definition SharedPointerArray.h:1044
ElementType *const * _Item
Definition SharedPointerArray.h:1052
ULANG_FORCEINLINE Iterator & operator++()
Definition SharedPointerArray.h:1041
friend ULANG_FORCEINLINE int32_t operator-(const Iterator &Left, const Iterator &Right)
Definition SharedPointerArray.h:1047
friend ULANG_FORCEINLINE Iterator operator+(int32_t Left, const Iterator &Right)
Definition SharedPointerArray.h:1046
ULANG_FORCEINLINE Iterator & operator--()
Definition SharedPointerArray.h:1043
ULANG_FORCEINLINE PointerType & Ptr() const
Definition SharedPointerArray.h:1050
ULANG_FORCEINLINE Iterator operator++(int)
Definition SharedPointerArray.h:1042
ULANG_FORCEINLINE Iterator(ElementType *const *Item, const typename InElementAllocatorType::RawAllocatorType &Allocator)
Definition SharedPointerArray.h:1035
ULANG_FORCEINLINE bool operator!=(const Iterator &Other) const
Definition SharedPointerArray.h:1040
ULANG_FORCEINLINE Iterator()
Definition SharedPointerArray.h:1034
Definition SharedPointerArray.h:21
ULANG_FORCEINLINE PointerType Pop(bool bAllowShrinking=true)
Definition SharedPointerArray.h:284
bool ContainsByKey(const ComparisonType &Key) const
Definition SharedPointerArray.h:517
void Empty(int32_t Slack=0)
Definition SharedPointerArray.h:709
ULANG_FORCEINLINE void DereferenceRange(int32_t BeginIndex, int32_t EndIndex)
Definition SharedPointerArray.h:1098
ULANG_FORCEINLINE PointerType operator[](int32_t Index) const
Definition SharedPointerArray.h:273
int32_t IndexOfByPredicate(Predicate Pred) const
Definition SharedPointerArray.h:455
InElementType ElementType
Definition SharedPointerArray.h:27
ULANG_FORCEINLINE int32_t GetSlack() const
Definition SharedPointerArray.h:210
ULANG_FORCEINLINE int32_t Num() const
Definition SharedPointerArray.h:232
void Sort()
Definition SharedPointerArray.h:1001
ULANG_FORCEINLINE int32_t Find(const ElementType *Item) const
Definition SharedPointerArray.h:377
int32_t RemoveAll(const Predicate &Pred)
Definition SharedPointerArray.h:924
ULANG_FORCEINLINE void RemoveAt(int32_t Index, CountType Count, bool bAllowShrinking=true)
Definition SharedPointerArray.h:629
TSPtrArrayG & operator=(const TSPtrArrayG< OtherElementType, OtherAllowNull, InElementAllocatorType, RawAllocatorArgsType... > &Other)
Definition SharedPointerArray.h:101
ULANG_FORCEINLINE void ReferenceRange(int32_t BeginIndex, int32_t EndIndex)
Definition SharedPointerArray.h:1085
void Reset(int32_t NewSize=0)
Definition SharedPointerArray.h:698
ULANG_FORCEINLINE int32_t Find(const PointerType &Item) const
Definition SharedPointerArray.h:381
ULANG_FORCEINLINE void Shrink()
Definition SharedPointerArray.h:347
TSPtrArrayG(TSPtrArrayG< OtherElementType, OtherAllowNull, InElementAllocatorType, RawAllocatorArgsType... > &&Other, int32_t ExtraSlack)
Definition SharedPointerArray.h:160
ULANG_FORCEINLINE TSPtrArrayG(RawAllocatorArgsType &&... RawAllocatorArgs)
Definition SharedPointerArray.h:35
int32_t ReplaceAt(const PointerType &Item, int32_t Index)
Definition SharedPointerArray.h:680
ULANG_FORCEINLINE Iterator end()
Definition SharedPointerArray.h:1058
ULANG_FORCEINLINE void Dereference(int32_t Index)
Definition SharedPointerArray.h:1078
int32_t IndexOfByKey(const KeyType &Key) const
Definition SharedPointerArray.h:443
ULANG_FORCEINLINE void Push(const PointerType &Item)
Definition SharedPointerArray.h:299
void(*)(ElementType *, const typename ElementAllocatorType::RawAllocatorType &) DereferenceFuncType
Definition SharedPointerArray.h:1124
ULANG_FORCEINLINE TSPtrArrayG(const TSPtrArrayG< OtherElementType, OtherAllowNull, InElementAllocatorType, RawAllocatorArgsType... > &Other)
Definition SharedPointerArray.h:60
PointerStorageType _PointerStorage
Definition SharedPointerArray.h:1118
int32_t RemoveSingleSwap(const PointerType &Item, bool bAllowShrinking=true)
Definition SharedPointerArray.h:968
bool Contains(const PointerType &Pointer) const
Definition SharedPointerArray.h:505
ULANG_FORCEINLINE void EnableDereference()
Definition SharedPointerArray.h:1064
int32_t RemoveSwap(const PointerType &Item)
Definition SharedPointerArray.h:988
ULANG_FORCEINLINE TOptional< PointerType > FindByKey(const KeyType &Key) const
Definition SharedPointerArray.h:469
ULANG_FORCEINLINE bool FindLast(const PointerType &Item, int32_t &Index) const
Definition SharedPointerArray.h:394
~TSPtrArrayG()
Definition SharedPointerArray.h:200
ULANG_FORCEINLINE void DereferenceAll()
Definition SharedPointerArray.h:1113
TSPtrG< ElementType, AllowNull, typename InElementAllocatorType::RawAllocatorType, RawAllocatorArgsType... > PointerType
Definition SharedPointerArray.h:29
ULANG_FORCEINLINE PointerType Top() const
Definition SharedPointerArray.h:326
void Append(TSPtrArrayG &Source)
Definition SharedPointerArray.h:737
ULANG_FORCEINLINE TOptional< PointerType > FindByPredicate(Predicate Pred) const
Definition SharedPointerArray.h:488
ULANG_FORCEINLINE void InsertNew(int32_t Index, CtorArgsType &&... CtorArgs)
Definition SharedPointerArray.h:804
ULANG_FORCEINLINE void RemoveAtSwap(int32_t Index)
Definition SharedPointerArray.h:647
int32_t Insert(const PointerType &Item, int32_t Index)
Definition SharedPointerArray.h:589
ULANG_FORCEINLINE TSPtrArrayG(TSPtrArrayG &&Other)
Definition SharedPointerArray.h:146
ULANG_FORCEINLINE int32_t AddUnique(const PointerType &Item)
Definition SharedPointerArray.h:856
ULANG_FORCEINLINE TSPtrArrayG(const TSPtrArrayG< OtherElementType, OtherAllowNull, InElementAllocatorType, RawAllocatorArgsType... > &Other, int32_t ExtraSlack)
Definition SharedPointerArray.h:87
ULANG_FORCEINLINE PointerType First() const
Definition SharedPointerArray.h:315
ULANG_FORCEINLINE const TSPtrArrayG< OtherElementType, OtherAllowNull, ElementAllocatorType, RawAllocatorArgsType... > & As() const
Definition SharedPointerArray.h:1023
ULANG_FORCEINLINE Iterator begin() const
Definition SharedPointerArray.h:1057
InElementAllocatorType ElementAllocatorType
Definition SharedPointerArray.h:28
int32_t AddZeroed(int32_t Count=1)
Definition SharedPointerArray.h:843
void InsertZeroed(int32_t Index, int32_t Count=1)
Definition SharedPointerArray.h:547
ULANG_FORCEINLINE Iterator begin()
Definition SharedPointerArray.h:1056
void RemoveAllSwap(const Predicate &Pred, bool bAllowShrinking=true)
Definition SharedPointerArray.h:945
ULANG_FORCEINLINE int32_t Add(const PointerType &Item)
Definition SharedPointerArray.h:821
TSPtrArrayG & operator=(TSPtrArrayG &&Other)
Definition SharedPointerArray.h:188
int32_t Insert(TSPtrArrayG &&Items, const int32_t InIndex)
Definition SharedPointerArray.h:575
ULANG_FORCEINLINE int32_t FindLastByPredicate(Predicate Pred) const
Definition SharedPointerArray.h:430
TSPtrArrayG & operator+=(const TSPtrArrayG &Other)
Definition SharedPointerArray.h:776
ULANG_FORCEINLINE PointerType RemoveAt(int32_t Index)
Definition SharedPointerArray.h:608
ULANG_FORCEINLINE Iterator end() const
Definition SharedPointerArray.h:1059
ULANG_FORCEINLINE TSPtrArrayG(const TSPtrArrayG &Other)
Definition SharedPointerArray.h:72
ULANG_FORCEINLINE int32_t FindLast(const PointerType &Item) const
Definition SharedPointerArray.h:405
ULANG_FORCEINLINE int32_t FindLastByPredicate(Predicate Pred, int32_t Count) const
Definition SharedPointerArray.h:418
int32_t Remove(const PointerType &Item)
Definition SharedPointerArray.h:905
void SetNumZeroed(int32_t NewNum, bool bAllowShrinking=true)
Definition SharedPointerArray.h:720
ULANG_FORCEINLINE int32_t AddNew(CtorArgsType &&... CtorArgs)
Definition SharedPointerArray.h:789
DereferenceFuncType _DereferenceFunc
Definition SharedPointerArray.h:1125
ULANG_FORCEINLINE TSPtrArrayG(TSPtrArrayG< OtherElementType, OtherAllowNull, InElementAllocatorType, RawAllocatorArgsType... > &&Other)
Definition SharedPointerArray.h:135
ULANG_FORCEINLINE bool IsEmpty() const
Definition SharedPointerArray.h:254
ULANG_FORCEINLINE void ReferenceAll()
Definition SharedPointerArray.h:1107
ULANG_FORCEINLINE bool ContainsByPredicate(Predicate Pred) const
Definition SharedPointerArray.h:530
ULANG_FORCEINLINE TSPtrArrayG(std::initializer_list< TSPtrG< OtherElementType, OtherAllowNull, typename InElementAllocatorType::RawAllocatorType, RawAllocatorArgsType... > > InitList, RawAllocatorArgsType &&... RawAllocatorArgs)
Definition SharedPointerArray.h:44
TSPtrArrayG & operator=(const TSPtrArrayG &Other)
Definition SharedPointerArray.h:118
void Append(TSPtrArrayG &&Source)
Definition SharedPointerArray.h:750
ULANG_FORCEINLINE TSPtrArrayG< OtherElementType, OtherAllowNull, ElementAllocatorType, RawAllocatorArgsType... > & As()
Definition SharedPointerArray.h:1021
ULANG_FORCEINLINE bool Find(const ElementType *Item, int32_t &Index) const
Definition SharedPointerArray.h:360
ULANG_FORCEINLINE void Reserve(int32_t Number)
Definition SharedPointerArray.h:874
int32_t Insert(const TSPtrArrayG &Items, const int32_t InIndex)
Definition SharedPointerArray.h:560
ULANG_FORCEINLINE void RemoveAtSwap(int32_t Index, CountType Count, bool bAllowShrinking=true)
Definition SharedPointerArray.h:666
int32_t RemoveSingle(const PointerType &Item)
Definition SharedPointerArray.h:887
ULANG_FORCEINLINE int32_t Max() const
Definition SharedPointerArray.h:243
TSPtrArrayG & operator=(TSPtrArrayG< OtherElementType, OtherAllowNull, InElementAllocatorType, RawAllocatorArgsType... > &&Other)
Definition SharedPointerArray.h:172
ULANG_FORCEINLINE bool Find(const PointerType &Item, int32_t &Index) const
Definition SharedPointerArray.h:364
TSPtrArrayG & operator+=(TSPtrArrayG &&Other)
Definition SharedPointerArray.h:764
void Sort(const PredicateType &Predicate)
Definition SharedPointerArray.h:1012
ULANG_FORCEINLINE PointerType Last(int32_t IndexFromTheEnd=0) const
Definition SharedPointerArray.h:337
ULANG_FORCEINLINE bool IsFilled() const
Definition SharedPointerArray.h:265
ULANG_FORCEINLINE bool IsValidIndex(int32_t Index) const
Definition SharedPointerArray.h:221
Definition SharedPointer.h:77
ULANG_FORCEINLINE ObjectType * Get() const
Definition SharedPointer.h:111
AllocatorType _Allocator
Definition SharedPointer.h:273
ObjectType * _Object
Pointer to original object.
Definition SharedPointer.h:269
ULANG_FORCEINLINE void EnableRelease()
Set the release function pointer to a valid value.
Definition SharedPointer.h:248
ULANG_FORCEINLINE void Sort(RangeType &&Range)
Definition Sort.h:18
Definition VVMEngineEnvironment.h:23
@ Unspecified
Not sure if success or failure.
ULANG_FORCEINLINE T && ForwardArg(typename TRemoveReference< T >::Type &Obj)
Definition References.h:115
ULANG_FORCEINLINE TRemoveReference< T >::Type && Move(T &&Obj)
Definition References.h:86
U16 Index
Definition radfft.cpp:71
Definition Allocator.h:238
Definition TypeTraits.h:451
@ MoveWillEmptyContainer
Definition TypeTraits.h:453
Definition TypeTraits.h:456
Definition Sorting.h:82
Definition TypeTraits.h:263
@ Value
Definition TypeTraits.h:264
Definition TypeTraits.h:325
Definition Sorting.h:36
Definition Optional.h:23
Definition Storage.h:106