5#include "Containers/Array.h"
73template<
typename ElementType>
139 return Ar << In.Entries << In.Items;
147 return A.Entries ==
B.Entries &&
A.Items ==
B.Items;
171 Ar << In.StartIndex << In.Size << In.Capacity;
178 friend bool operator==(
const FEntry&
A,
const FEntry&
B)
180 return A.StartIndex ==
B.StartIndex &&
A.Size ==
B.Size &&
A.Capacity ==
B.Capacity;
233 return *
this ==
Root();
245 return ChildrenHandle;
296 return A.Range ==
B.Range &&
A.Parent ==
B.Parent &&
A.ChildrenID ==
B.ChildrenID &&
A.DataID ==
B.DataID;
544 return CurrentNodeHandle;
550 return CurrentNodeHandle.
IsValid();
558 return Lhs.Tree == Rhs.Tree && Lhs.CurrentNodeHandle == Rhs.CurrentNodeHandle && Lhs.CurrentRange == Rhs.CurrentRange;
562 return Lhs.Tree != Rhs.Tree || Lhs.CurrentNodeHandle != Rhs.CurrentNodeHandle || Lhs.CurrentRange != Rhs.CurrentRange;
601template<
typename DataType>
649 return this->
GetAllData(InNodeHandle).IsValid() ==
false;
746 return A.Data ==
B.Data &&
A.RootNode ==
B.RootNode &&
A.ChildNodes ==
B.ChildNodes;
765 if (!
InNode.DataID.IsValid())
767 InNode.DataID = Tree.Data.AllocateEntry(1);
771 if (!NodeData.
Contains(DataToInsert))
777 DataType DataToInsert;
788 if (!
InNode.DataID.IsValid())
796 DataType DataToInsert;
803template<
typename DataType>
809 , CurrentNode(StartNode.
IsValid() ? &
InTree.GetNode(StartNode) : nullptr)
813 while (CurrentNode && !
InTree.GetDataForSingleNode(*CurrentNode).IsValidIndex(DataIndex))
823 return Tree->GetDataForSingleNode(*CurrentNode)[DataIndex];
829 return &Tree->GetDataForSingleNode(*CurrentNode)[DataIndex];
835 return CurrentNode && Tree->GetDataForSingleNode(*CurrentNode).IsValidIndex(DataIndex);
850 while (CurrentNode && !Tree->GetDataForSingleNode(*CurrentNode).IsValidIndex(DataIndex))
852 CurrentNode = CurrentNode->
Parent.
IsValid() ? &Tree->GetNode(CurrentNode->
Parent) :
nullptr;
874template<
typename ElementType>
878 Entries.Add(FEntry{Items.Num(), 0, InitialCapacity});
879 Items.SetNum(Items.Num() + InitialCapacity);
883template<
typename ElementType>
886 const FEntry& Entry = Entries[ID.EntryIndex];
890template<
typename ElementType>
893 const FEntry& Entry = Entries[ID.EntryIndex];
897template<
typename ElementType>
900 FEntry& Entry = Entries[ID.EntryIndex];
901 if (Entry.Size+1 > Entry.Capacity)
903 ReserveEntry(ID, FMath::Max<int32>(Entry.Capacity*2, 2));
906 Items[Entry.StartIndex + Entry.Size] =
MoveTemp(Element);
910template<
typename ElementType>
913 FEntry& Entry = Entries[ID.EntryIndex];
914 if (Entry.Size+1 > Entry.Capacity)
916 ReserveEntry(ID, FMath::Max<int32>(Entry.Capacity*2, 2));
922 if (
Index <= Entry.Size-1)
924 ElementType* OldLocation = &Items[Entry.StartIndex +
Index];
936template<
typename ElementType>
941 for (FEntry& Entry : Entries)
945 const int32 OldIndex = Entry.StartIndex;
948 NewItems.Append(&Items[OldIndex], Entry.Size);
954 Entry.Capacity = Entry.Size;
961template<
typename ElementType>
964 FEntry& Entry = Entries[ID.EntryIndex];
973 Items.SetNum(Items.Num() + Entry.Capacity);
975 ElementType* OldLocation = &Items[Entry.StartIndex];
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
FArchive & operator<<(FArchive &Ar, FEnvQueryDebugProfileData::FStep &Data)
Definition EnvQueryTypes.cpp:489
const bool
Definition NetworkReplayStreaming.h:178
UE_REWRITE T CopyTemp(T &Val)
Definition UnrealTemplate.h:554
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32 Size
Definition VulkanMemory.cpp:4034
Definition Archive.h:1208
virtual CORE_API void UsingCustomVersion(const struct FGuid &Guid)
Definition Archive.cpp:590
UE_FORCEINLINE_HINT bool IsSaving() const
Definition Archive.h:248
Definition ArrayView.h:139
constexpr bool Contains(const ComparisonType &Item) const
Definition ArrayView.h:729
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void Reset(SizeType NewSize=0)
Definition Array.h:2246
Definition AssetRegistryState.h:50
Definition RangeBound.h:36
BoundsType GetUpperBound() const
Definition Range.h:274
BoundsType GetLowerBound() const
Definition Range.h:228
@ Tree
Definition ITypedTableView.h:40
bool operator==(const FCachedAssetKey &A, const FCachedAssetKey &B)
Definition AssetDataMap.h:501
U16 Index
Definition radfft.cpp:71
Definition MovieSceneEvaluationTree.h:26
bool IsValid() const
Definition MovieSceneEvaluationTree.h:37
friend FArchive & operator<<(FArchive &Ar, FEvaluationTreeEntryHandle &In)
Definition MovieSceneEvaluationTree.h:55
friend bool operator==(const FEvaluationTreeEntryHandle &A, const FEvaluationTreeEntryHandle &B)
Definition MovieSceneEvaluationTree.h:45
friend bool operator!=(const FEvaluationTreeEntryHandle &A, const FEvaluationTreeEntryHandle &B)
Definition MovieSceneEvaluationTree.h:50
FEvaluationTreeEntryHandle()
Definition MovieSceneEvaluationTree.h:30
static constexpr UE_FORCEINLINE_HINT T Clamp(const T X, const T MinValue, const T MaxValue)
Definition UnrealMathUtility.h:592
Definition MovieSceneEvaluationTree.h:212
static FMovieSceneEvaluationTreeNodeHandle Invalid()
Definition MovieSceneEvaluationTree.h:225
bool IsValid() const
Definition MovieSceneEvaluationTree.h:237
FMovieSceneEvaluationTreeNodeHandle(FEvaluationTreeEntryHandle InChildrenHandle, int32 InIndex)
Definition MovieSceneEvaluationTree.h:214
FEvaluationTreeEntryHandle GetHandle() const
Definition MovieSceneEvaluationTree.h:243
int32 GetChildIndex() const
Definition MovieSceneEvaluationTree.h:249
static FMovieSceneEvaluationTreeNodeHandle Root()
Definition MovieSceneEvaluationTree.h:219
friend FArchive & operator<<(FArchive &Ar, FMovieSceneEvaluationTreeNodeHandle &In)
Definition MovieSceneEvaluationTree.h:261
friend bool operator!=(const FMovieSceneEvaluationTreeNodeHandle &A, const FMovieSceneEvaluationTreeNodeHandle &B)
Definition MovieSceneEvaluationTree.h:259
bool IsRoot() const
Definition MovieSceneEvaluationTree.h:231
friend bool operator==(const FMovieSceneEvaluationTreeNodeHandle &A, const FMovieSceneEvaluationTreeNodeHandle &B)
Definition MovieSceneEvaluationTree.h:257
Definition MovieSceneEvaluationTree.h:273
FEvaluationTreeEntryHandle DataID
Definition MovieSceneEvaluationTree.h:306
FMovieSceneEvaluationTreeNodeHandle Parent
Definition MovieSceneEvaluationTree.h:302
FMovieSceneEvaluationTreeNode()
Definition MovieSceneEvaluationTree.h:275
FEvaluationTreeEntryHandle ChildrenID
Definition MovieSceneEvaluationTree.h:304
friend FArchive & operator<<(FArchive &Ar, FMovieSceneEvaluationTreeNode &In)
Definition MovieSceneEvaluationTree.h:286
TRange< FFrameNumber > Range
Definition MovieSceneEvaluationTree.h:300
friend bool operator==(const FMovieSceneEvaluationTreeNode &A, const FMovieSceneEvaluationTreeNode &B)
Definition MovieSceneEvaluationTree.h:294
FMovieSceneEvaluationTreeNode(TRange< FFrameNumber > InRange, FMovieSceneEvaluationTreeNodeHandle InParent)
Definition MovieSceneEvaluationTree.h:280
Definition MovieSceneEvaluationTree.h:500
friend bool operator==(const FMovieSceneEvaluationTreeRangeIterator &Lhs, const FMovieSceneEvaluationTreeRangeIterator &Rhs)
Definition MovieSceneEvaluationTree.h:556
FMovieSceneEvaluationTreeNodeHandle Node() const
Definition MovieSceneEvaluationTree.h:542
FMovieSceneEvaluationTreeRangeIterator Next() const
Definition MovieSceneEvaluationTree.h:522
FMovieSceneEvaluationTreeRangeIterator Previous() const
Definition MovieSceneEvaluationTree.h:529
TRange< FFrameNumber > Range() const
Definition MovieSceneEvaluationTree.h:536
friend bool operator!=(const FMovieSceneEvaluationTreeRangeIterator &Lhs, const FMovieSceneEvaluationTreeRangeIterator &Rhs)
Definition MovieSceneEvaluationTree.h:560
FMovieSceneEvaluationTreeRangeIterator & operator--()
Definition MovieSceneEvaluationTree.h:515
FMovieSceneEvaluationTreeRangeIterator & operator++()
Definition MovieSceneEvaluationTree.h:508
Definition MovieSceneEvaluationTree.h:329
bool IsValid(FMovieSceneEvaluationTreeNodeHandle Handle) const
Definition MovieSceneEvaluationTree.h:423
TEvaluationTreeEntryContainer< FMovieSceneEvaluationTreeNode > ChildNodes
Definition MovieSceneEvaluationTree.h:493
MOVIESCENE_API void InsertNewChild(TRange< FFrameNumber > InEffectiveRange, const IMovieSceneEvaluationTreeNodeOperator &InOperator, int32 InsertIndex, FMovieSceneEvaluationTreeNodeHandle InParent)
Definition MovieSceneEvaluationTree.cpp:179
FMovieSceneEvaluationTree(FMovieSceneEvaluationTree &&RHS)
Definition MovieSceneEvaluationTree.h:339
MOVIESCENE_API FMovieSceneEvaluationTreeRangeIterator IterateFromLowerBound(TRangeBound< FFrameNumber > InStartingLowerBound) const
Definition MovieSceneEvaluationTree.cpp:174
MOVIESCENE_API TArrayView< const FMovieSceneEvaluationTreeNode > GetChildren(const FMovieSceneEvaluationTreeNode &InNode) const
Definition MovieSceneEvaluationTree.cpp:159
FMovieSceneEvaluationTree(const FMovieSceneEvaluationTree &RHS)=default
FMovieSceneEvaluationTreeNode RootNode
Definition MovieSceneEvaluationTree.h:490
MOVIESCENE_API void AddTimeRange(TRange< FFrameNumber > InTimeRange)
Definition MovieSceneEvaluationTree.cpp:208
FMovieSceneEvaluationTreeNode & GetNode(FMovieSceneEvaluationTreeNodeHandle Handle)
Definition MovieSceneEvaluationTree.h:385
FMovieSceneEvaluationTree()
Definition MovieSceneEvaluationTree.h:330
FMovieSceneEvaluationTreeNode & GetNode(FEvaluationTreeEntryHandle ChildrenID, int32 Index)
Definition MovieSceneEvaluationTree.h:455
const FMovieSceneEvaluationTreeNode & GetNode(FEvaluationTreeEntryHandle ChildrenID, int32 Index) const
Definition MovieSceneEvaluationTree.h:464
FMovieSceneEvaluationTree & operator=(const FMovieSceneEvaluationTree &RHS)=default
FMovieSceneEvaluationTree & operator=(FMovieSceneEvaluationTree &&RHS)
Definition MovieSceneEvaluationTree.h:347
MOVIESCENE_API FMovieSceneEvaluationTreeRangeIterator IterateFromTime(FFrameNumber Time) const
Definition MovieSceneEvaluationTree.cpp:169
const FMovieSceneEvaluationTreeNode & GetRootNode() const
Definition MovieSceneEvaluationTree.h:376
friend FArchive & operator<<(FArchive &Ar, FMovieSceneEvaluationTree &In)
Definition MovieSceneEvaluationTree.h:444
const FMovieSceneEvaluationTreeNode & GetNode(FMovieSceneEvaluationTreeNodeHandle Handle) const
Definition MovieSceneEvaluationTree.h:395
void Reset()
Definition MovieSceneEvaluationTree.h:428
CORE_API static const FGuid GUID
Definition SequencerObjectVersion.h:60
Definition MovieSceneEvaluationTree.h:194
virtual void operator()(FMovieSceneEvaluationTreeNode &Node) const =0
virtual ~IMovieSceneEvaluationTreeNodeOperator()
Definition MovieSceneEvaluationTree.h:198
Definition MovieSceneEvaluationTree.h:75
TArrayView< const ElementType > Get(FEvaluationTreeEntryHandle ID) const
Definition MovieSceneEvaluationTree.h:891
friend FArchive & operator<<(FArchive &Ar, TEvaluationTreeEntryContainer &In)
Definition MovieSceneEvaluationTree.h:131
void Add(FEvaluationTreeEntryHandle ID, ElementType &&Element)
Definition MovieSceneEvaluationTree.h:898
TArrayView< ElementType > Get(FEvaluationTreeEntryHandle ID)
Definition MovieSceneEvaluationTree.h:884
friend bool operator==(const TEvaluationTreeEntryContainer< ElementType > &A, const TEvaluationTreeEntryContainer< ElementType > &B)
Definition MovieSceneEvaluationTree.h:145
FEvaluationTreeEntryHandle AllocateEntry(int32 InitialCapacity=2)
Definition MovieSceneEvaluationTree.h:875
void Reset()
Definition MovieSceneEvaluationTree.h:122
void Compact()
Definition MovieSceneEvaluationTree.h:937
void Insert(FEvaluationTreeEntryHandle ID, int32 Index, ElementType &&Element)
Definition MovieSceneEvaluationTree.h:911
Definition MovieSceneEvaluationTree.h:805
friend TMovieSceneEvaluationTreeDataIterator< DataType > end(const TMovieSceneEvaluationTreeDataIterator< DataType > &In)
Definition MovieSceneEvaluationTree.h:860
TMovieSceneEvaluationTreeDataIterator & operator++()
Definition MovieSceneEvaluationTree.h:845
friend TMovieSceneEvaluationTreeDataIterator< DataType > begin(const TMovieSceneEvaluationTreeDataIterator< DataType > &In)
Definition MovieSceneEvaluationTree.h:859
bool IsValid() const
Definition MovieSceneEvaluationTree.h:833
const DataType * operator->() const
Definition MovieSceneEvaluationTree.h:827
friend bool operator==(const TMovieSceneEvaluationTreeDataIterator< DataType > &A, const TMovieSceneEvaluationTreeDataIterator< DataType > &B)
Definition MovieSceneEvaluationTree.h:862
friend bool operator!=(const TMovieSceneEvaluationTreeDataIterator< DataType > &A, const TMovieSceneEvaluationTreeDataIterator< DataType > &B)
Definition MovieSceneEvaluationTree.h:863
const DataType & operator*() const
Definition MovieSceneEvaluationTree.h:821
TMovieSceneEvaluationTreeDataIterator(const TMovieSceneEvaluationTree< DataType > &InTree, FMovieSceneEvaluationTreeNodeHandle StartNode)
Definition MovieSceneEvaluationTree.h:807
Definition MovieSceneEvaluationTree.h:603
void AddSelective(TRange< FFrameNumber > InTimeRange, DataType InData, TFunctionRef< bool(FMovieSceneEvaluationTreeNodeHandle)> Predicate)
Definition MovieSceneEvaluationTree.h:672
TArrayView< DataType > GetMutableDataForSingleNode(const FMovieSceneEvaluationTreeNode &InNode)
Definition MovieSceneEvaluationTree.h:717
void Add(TRange< FFrameNumber > InTimeRange, DataType InData)
Definition MovieSceneEvaluationTree.h:683
friend bool operator==(const TMovieSceneEvaluationTree< DataType > &A, const TMovieSceneEvaluationTree< DataType > &B)
Definition MovieSceneEvaluationTree.h:744
void Compact()
Definition MovieSceneEvaluationTree.h:691
void AddUnique(TRange< FFrameNumber > InTimeRange, DataType InData)
Definition MovieSceneEvaluationTree.h:635
friend FArchive & operator<<(FArchive &Ar, TMovieSceneEvaluationTree< DataType > &In)
Definition MovieSceneEvaluationTree.h:735
void Add(TRange< FFrameNumber > InTimeRange)
Definition MovieSceneEvaluationTree.h:618
void Reset()
Definition MovieSceneEvaluationTree.h:700
void AddIfEmpty(TRange< FFrameNumber > InTimeRange, DataType InData)
Definition MovieSceneEvaluationTree.h:646
bool IsEmpty() const
Definition MovieSceneEvaluationTree.h:608
TMovieSceneEvaluationTreeDataIterator< DataType > GetAllData(FMovieSceneEvaluationTreeNodeHandle NodeHandle) const
Definition MovieSceneEvaluationTree.h:727
TArrayView< const DataType > GetDataForSingleNode(const FMovieSceneEvaluationTreeNode &InNode) const
Definition MovieSceneEvaluationTree.h:709
void AddIfEmptySelective(TRange< FFrameNumber > InTimeRange, DataType InData, TFunctionRef< bool(FMovieSceneEvaluationTreeNodeHandle)> Predicate)
Definition MovieSceneEvaluationTree.h:659