6#include "Containers/Array.h"
17template <
typename InElementType>
38template<
typename InElementType>
61 check(Result.Array.Num() > 0 && Result.StartIndex >= 0);
71 check(Result.Array.Num() > 0 && Result.StartIndex >= 0);
83 check(Result.Array.Num() > 0 && (Result.MoveIndex > 0 || Result.MoveIndex ==
INDEX_NONE) && Result.StartIndex >= 0);
93 check(Result.Array.Num() == 0 && Result.MoveIndex >= 0 && Result.StartIndex >= 0 && Result.MoveIndex != Result.StartIndex);
185template <
typename InElementType>
213 template<
typename InOtherAllocatorType>
220 template <
typename InOtherAllocatorType>
240 return ArrayChangedDelegate;
247 ArrayChangedDelegate.Broadcast(ObservableArrayChangedArgsType::MakeAddAction({
GetData() + NewIndex, 1 }, NewIndex));
254 ArrayChangedDelegate.Broadcast(ObservableArrayChangedArgsType::MakeAddAction({
GetData() + NewIndex, 1 }, NewIndex));
262 ArrayChangedDelegate.Broadcast(ObservableArrayChangedArgsType::MakeAddAction({
GetData() + NewIndex, 1 }, NewIndex));
270 ArrayChangedDelegate.Broadcast(ObservableArrayChangedArgsType::MakeAddAction({
GetData() +
Index, 1 },
Index));
273 template <
typename OtherElementType>
279 template <
typename OtherElementType,
typename OtherAllocatorType>
282 if (Source.Num() > 0)
291 template <
typename OtherElementType,
typename OtherAllocator>
294 if (Source.Num() > 0)
342 ArrayChangedDelegate.Broadcast(ObservableArrayChangedArgsType::MakeRemoveAction({ &
RemovedElement, 1 },
Index));
344 template <UE::CIntegral CountType>
347 static_assert(!std::is_same_v<CountType, bool>,
"TObservableArray::RemoveAt: unexpected bool passed as the Count argument");
355 ArrayChangedDelegate.Broadcast(ObservableArrayChangedArgsType::MakeRemoveAction({ &
RemovedElement, 1 },
Index));
389 template <UE::CIntegral CountType>
392 static_assert(!std::is_same_v<CountType, bool>,
"TObservableArray::RemoveAtSwap: unexpected bool passed as the Count argument");
440 Array.
Reset(NewSize);
443 ArrayChangedDelegate.Broadcast(ObservableArrayChangedArgsType::MakeResetAction());
487 template <
typename ComparisonType>
493 template <
typename InPredicate>
501 return Array.
Find(Item);
504 template <
typename InPredicate>
510 template <
typename InPredicate>
516 template <
typename InPredicate>
517 UE_DEPRECATED(5.4,
"IndexByPredicate is deprecated. Use IndexOfByPredicate instead")
523 template <
typename InPredicate>
530 template <
typename InOtherAllocatorType>
541 template <
typename InOtherAllocatorType>
550 return Array.
begin();
555 return Array.
begin();
EAllowShrinking
Definition AllowShrinking.h:10
#define UE_ALLOWSHRINKING_BOOL_DEPRECATED(FunctionName)
Definition AllowShrinking.h:31
#define check(expr)
Definition AssertionMacros.h:314
return Self
Definition CocoaThread.cpp:337
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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 > && 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
Definition MemStack.h:506
InSizeType SizeType
Definition ArrayView.h:142
InElementType ElementType
Definition ArrayView.h:141
InAllocatorType AllocatorType
Definition Array.h:677
ElementType * FindByPredicate(Predicate Pred)
Definition Array.h:1471
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void RemoveAt(SizeType Index, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2083
TCheckedPointerIterator< const ElementType, SizeType, false > RangedForConstIteratorType
Definition Array.h:3372
void Reset(SizeType NewSize=0)
Definition Array.h:2246
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
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_FORCEINLINE_HINT void SwapMemory(SizeType FirstIndexToSwap, SizeType SecondIndexToSwap)
Definition Array.h:3284
UE_NODEBUG UE_FORCEINLINE_HINT RangedForIteratorType end()
Definition Array.h:3391
bool Contains(const ComparisonType &Item) const
Definition Array.h:1518
typename InAllocatorType::SizeType SizeType
Definition Array.h:675
UE_REWRITE bool IsEmpty() const
Definition Array.h:1133
UE_FORCEINLINE_HINT SizeType Emplace(ArgsType &&... Args)
Definition Array.h:2561
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 Append(const TArray< OtherElementType, OtherAllocatorType > &Source)
Definition Array.h:2412
UE_NODEBUG UE_FORCEINLINE_HINT RangedForIteratorType begin()
Definition Array.h:3389
UE_NODEBUG UE_FORCEINLINE_HINT bool Find(const ElementType &Item, SizeType &Index) const
Definition Array.h:1302
SizeType IndexOfByPredicate(Predicate Pred) const
Definition Array.h:1423
UE_FORCEINLINE_HINT void EmplaceAt(SizeType Index, ArgsType &&... Args)
Definition Array.h:2665
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
TCheckedPointerIterator< ElementType, SizeType, false > RangedForIteratorType
Definition Array.h:3371
static FORCEINLINE FMemStack & Get()
Definition ThreadSingleton.h:101
Definition ObservableArray.h:15
EObservableArrayChangedAction
Definition ObservableArray.h:22
U16 Index
Definition radfft.cpp:71
Definition ObservableArray.h:118
SizeType PreviousMovedElmenentIndex
Definition ObservableArray.h:136
FRemoveSwapIndex(SizeType InRemoveIndex, SizeType InPreviousMovedElmenentIndex)
Definition ObservableArray.h:119
SizeType RemoveIndex
Definition ObservableArray.h:130
Definition ObservableArray.h:149
SizeType SecondIndex
Definition ObservableArray.h:157
SizeType FirstIndex
Definition ObservableArray.h:156
FSwapIndex(SizeType InFirstIndex, SizeType InSecondIndex)
Definition ObservableArray.h:150
Definition ObservableArray.h:40
ArrayViewType GetItems() const
Definition ObservableArray.h:169
EObservableArrayChangedAction GetAction() const
Definition ObservableArray.h:99
SizeType GetActionIndex() const
Definition ObservableArray.h:112
FSwapIndex GetSwapIndex() const
Definition ObservableArray.h:163
FRemoveSwapIndex GetRemovedSwapIndexes() const
Definition ObservableArray.h:143
Definition ObservableArray.h:187
void Swap(SizeType FirstIndexToSwap, SizeType SecondIndexToSwap)
Definition ObservableArray.h:427
bool Contains(const ComparisonType &Item) const
Definition ObservableArray.h:488
friend bool operator==(TArray< ElementType, InOtherAllocatorType > &OtherArray, const TObservableArray &Self)
Definition ObservableArray.h:542
TObservableArray & operator=(TObservableArray &&Other)=delete
bool operator==(const TObservableArray &OtherArray) const
Definition ObservableArray.h:536
bool IsEmpty() const
Definition ObservableArray.h:452
FArrayChangedDelegate & OnArrayChanged()
Definition ObservableArray.h:238
ElementType * FindByPredicate(InPredicate Pred)
Definition ObservableArray.h:505
const ElementType * GetData() const
Definition ObservableArray.h:482
ElementType & operator[](SizeType Index)
Definition ObservableArray.h:467
SizeType IndexByPredicate(InPredicate Pred) const
Definition ObservableArray.h:518
const ElementType * FindByPredicate(InPredicate Pred) const
Definition ObservableArray.h:511
typename ArrayType::SizeType SizeType
Definition ObservableArray.h:190
~TObservableArray()
Definition ObservableArray.h:233
RangedForConstIteratorType end() const
Definition ObservableArray.h:563
SizeType ContainsByPredicate(InPredicate Pred) const
Definition ObservableArray.h:494
SizeType Add(const ElementType &Item)
Definition ObservableArray.h:244
SizeType Add(ElementType &&Item)
Definition ObservableArray.h:251
void EmplaceAt(SizeType Index, InArgTypes &&... Args)
Definition ObservableArray.h:267
SizeType Emplace(InArgTypes &&... Args)
Definition ObservableArray.h:259
void Reset(SizeType NewSize=0)
Definition ObservableArray.h:437
SizeType Find(const ElementType &Item) const
Definition ObservableArray.h:499
void Append(const TObservableArray< OtherElementType > &Source)
Definition ObservableArray.h:274
SizeType RemoveSingle(const ElementType &Item, EAllowShrinking AllowShrinking=EAllowShrinking::Default)
Definition ObservableArray.h:303
RangedForConstIteratorType begin() const
Definition ObservableArray.h:553
void RemoveAt(SizeType Index, EAllowShrinking AllowShrinking=EAllowShrinking::Default)
Definition ObservableArray.h:335
SizeType RemoveSingleSwap(const ElementType &Item, EAllowShrinking AllowShrinking=EAllowShrinking::Default)
Definition ObservableArray.h:319
RangedForIteratorType begin()
Definition ObservableArray.h:548
TObservableArray(const TObservableArray &)=delete
void RemoveAtSwap(SizeType Index, EAllowShrinking AllowShrinking=EAllowShrinking::Default)
Definition ObservableArray.h:379
TArray< InElementType > ArrayType
Definition ObservableArray.h:189
typename ArrayType::ElementType ElementType
Definition ObservableArray.h:191
int32 Num() const
Definition ObservableArray.h:457
typename ArrayType::RangedForIteratorType RangedForIteratorType
Definition ObservableArray.h:193
TObservableArray(std::initializer_list< ElementType > InitList)
Definition ObservableArray.h:207
bool operator==(TArray< ElementType, InOtherAllocatorType > &OtherArray) const
Definition ObservableArray.h:531
bool IsValidIndex(SizeType Index) const
Definition ObservableArray.h:462
SizeType IndexOfByPredicate(InPredicate Pred) const
Definition ObservableArray.h:524
TObservableArray()=default
typename ArrayType::AllocatorType AllocatorType
Definition ObservableArray.h:192
void Reserve(SizeType Number)
Definition ObservableArray.h:447
RangedForIteratorType end()
Definition ObservableArray.h:558
const ElementType & operator[](SizeType Index) const
Definition ObservableArray.h:472
ElementType * GetData()
Definition ObservableArray.h:477
void Append(const TArray< OtherElementType, OtherAllocatorType > &Source)
Definition ObservableArray.h:280
DECLARE_MULTICAST_DELEGATE_OneParam(FArrayChangedDelegate, ObservableArrayChangedArgsType)
void RemoveAtSwap(SizeType Index, CountType NumToRemove, EAllowShrinking AllowShrinking=EAllowShrinking::Default)
Definition ObservableArray.h:390
typename ArrayType::RangedForConstIteratorType RangedForConstIteratorType
Definition ObservableArray.h:194
TObservableArray & operator=(const TObservableArray &)=delete
TObservableArray(const TArray< ElementType, InOtherAllocatorType > &Other)
Definition ObservableArray.h:214
void Append(TArray< OtherElementType, OtherAllocator > &&Source)
Definition ObservableArray.h:292
TObservableArray(const ElementType *Ptr, SizeType Count)
Definition ObservableArray.h:201
TObservableArray(TObservableArray &&Other)=delete
void RemoveAt(SizeType Index, CountType NumToRemove, EAllowShrinking AllowShrinking=EAllowShrinking::Default)
Definition ObservableArray.h:345
TObservableArray(TArray< ElementType, InOtherAllocatorType > &&Other)
Definition ObservableArray.h:221