32 RefCounts(
MoveTemp(From.RefCounts)), FreeIndices(
MoveTemp(From.FreeIndices)), UsedCount(From.UsedCount)
39 RefCounts =
MoveTemp(From.RefCounts);
40 FreeIndices =
MoveTemp(From.FreeIndices);
41 UsedCount = From.UsedCount;
48 return UsedCount == 0;
78 int n = RefCounts[
Index];
84 return RefCounts[
Index];
95 for (
size_t Idx =
OrigFree, N = FreeIndices.
Num(); Idx < N; ++Idx)
99 UsedCount +=
Other.UsedCount;
121 RefCounts[
iFree] = 1;
135 RefCounts[
Index] += IncrementCount;
136 return RefCounts[
Index];
142 RefCounts[
Index] -= DecrementCount;
143 if (RefCounts[
Index] == 0)
181 for (
int i = 0; i < N; ++i)
183 if (FreeIndices[i] ==
Index)
185 FreeIndices[i] = FreeIndices.
Back();
187 RefCounts[
Index] = 1;
222 RefCounts[
Index] = 1;
265 template <
typename IterateFunc,
typename AllocateRefCountFunc,
typename IncrementRefCountFunc>
276 unsigned short& RefCount = RefCounts[
Index];
312 for (
int i = 0; i < N; ++i)
467 template<
typename ToType>
496 template<
typename ToType>
534 return FString::Printf(
TEXT(
"RefCountSize %zu FreeSize %zu FreeMem %zukb"),
575 Ar << bUseCompression;
591 if (UsedCount == RefCounts.
Num())
604 if (bCompactData || bUseCompression)
609 const size_t NumFree = RefCounts.
Num() - UsedCount;
610 FreeIndices.
Resize(NumFree);
612 for (
size_t i = 0,
Num = RefCounts.
Num(); (i <
Num) & (
Index < NumFree); ++i)
616 FreeIndices[
Index++] = i;
632 if (Lhs.
GetCount() != Rhs.GetCount())
637 const size_t Num = FMath::Max(Lhs.
GetMaxIndex(), Rhs.GetMaxIndex());
638 for (
size_t Idx = 0; Idx <
Num; ++Idx)
656 return !(Lhs == Rhs);
661 TDynamicVector<int> FreeIndices{};
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define ensure( InExpression)
Definition AssertionMacros.h:464
@ INDEX_NONE
Definition CoreMiscDefines.h:150
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const bool
Definition NetworkReplayStreaming.h:178
#define MAX_uint16
Definition NumericLimits.h:20
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 void Serialize(void *V, int64 Length)
Definition Archive.h:1689
virtual CORE_API void UsingCustomVersion(const struct FGuid &Guid)
Definition Archive.cpp:590
UE_FORCEINLINE_HINT bool IsLoading() const
Definition Archive.h:236
CORE_API int32 CustomVer(const struct FGuid &Key) const
Definition Archive.cpp:602
Definition AndroidPlatformMisc.h:14
Definition RefCountVector.h:355
bool operator==(const BaseIterator &Other) const
Definition RefCountVector.h:364
int LastIndex
Definition RefCountVector.h:395
BaseIterator(const FRefCountVector *VectorIn, int IndexIn, int LastIn)
Definition RefCountVector.h:383
void goto_next()
Definition RefCountVector.h:374
const FRefCountVector * Vector
Definition RefCountVector.h:393
int Index
Definition RefCountVector.h:394
bool operator!=(const BaseIterator &Other) const
Definition RefCountVector.h:368
BaseIterator()
Definition RefCountVector.h:357
Definition RefCountVector.h:506
FilteredEnumerable(const IndexEnumerable &enumerable, TFunction< bool(int)> FilterFuncIn)
Definition RefCountVector.h:510
TFunction< bool(int)> FilterFunc
Definition RefCountVector.h:508
IndexEnumerable enumerable
Definition RefCountVector.h:509
FilteredIterator< int, IndexIterator > end()
Definition RefCountVector.h:521
FilteredIterator< int, IndexIterator > begin()
Definition RefCountVector.h:516
Definition RefCountVector.h:445
FRefCountVector::IndexIterator begin() const
Definition RefCountVector.h:450
IndexEnumerable()
Definition RefCountVector.h:448
const FRefCountVector * Vector
Definition RefCountVector.h:447
IndexEnumerable(const FRefCountVector *VectorIn)
Definition RefCountVector.h:449
FRefCountVector::IndexIterator end() const
Definition RefCountVector.h:451
Definition RefCountVector.h:403
IndexIterator(const FRefCountVector *VectorIn, int Index, int Last)
Definition RefCountVector.h:425
IndexIterator()
Definition RefCountVector.h:405
int operator*() const
Definition RefCountVector.h:407
IndexIterator & operator++()
Definition RefCountVector.h:412
IndexIterator operator++(int)
Definition RefCountVector.h:417
Definition RefCountVector.h:469
MappedIterator< int, ToType, IndexIterator > end()
Definition RefCountVector.h:485
MappedEnumerable(const IndexEnumerable &enumerable, TFunction< ToType(int)> MapFunc)
Definition RefCountVector.h:474
MappedIterator< int, ToType, IndexIterator > begin()
Definition RefCountVector.h:480
TFunction< ToType(int)> MapFunc
Definition RefCountVector.h:471
IndexEnumerable enumerable
Definition RefCountVector.h:472
Definition RefCountVector.h:25
FRefCountVector & operator=(FRefCountVector &&From)
Definition RefCountVector.h:37
MappedEnumerable< ToType > MappedIndices(TFunction< ToType(int)> MapFunc) const
Definition RefCountVector.h:497
bool AllocateAt(int Index)
Definition RefCountVector.h:158
friend bool operator==(const FRefCountVector &Lhs, const FRefCountVector &Rhs)
Definition RefCountVector.h:630
TDynamicVector< unsigned short > & GetRawRefCountsUnsafe()
Definition RefCountVector.h:236
FRefCountVector(const FRefCountVector &)=default
void RebuildFreeList()
Definition RefCountVector.h:306
FRefCountVector & operator=(const FRefCountVector &)=default
FString UsageStats() const
Definition RefCountVector.h:532
size_t GetMaxIndex() const
Definition RefCountVector.h:56
static constexpr unsigned short INVALID_REF_COUNT
Definition RefCountVector.h:27
FRefCountVector(FRefCountVector &&From)
Definition RefCountVector.h:31
size_t GetCount() const
Definition RefCountVector.h:51
friend FArchive & operator<<(FArchive &Ar, FRefCountVector &Vec)
Definition RefCountVector.h:550
IndexIterator BeginIndices() const
Definition RefCountVector.h:430
bool IsDense() const
Definition RefCountVector.h:61
void Clear()
Definition RefCountVector.h:332
void Trim(int maxIndex)
Definition RefCountVector.h:325
void Decrement(int Index, unsigned short DecrementCount=1)
Definition RefCountVector.h:139
int GetRefCount(int Index) const
Definition RefCountVector.h:76
void Serialize(FArchive &Ar, bool bCompactData, bool bUseCompression)
Definition RefCountVector.h:562
FRefCountVector()=default
bool IsValidUnsafe(int Index) const
Definition RefCountVector.h:71
bool AllocateAtUnsafe(int Index)
Definition RefCountVector.h:200
SIZE_T GetByteCount() const
Definition RefCountVector.h:538
void InitDense(int Size, uint16 RefCountValue=1)
Definition RefCountVector.h:340
friend bool operator!=(const FRefCountVector &Lhs, const FRefCountVector &Rhs)
Definition RefCountVector.h:654
const TDynamicVector< unsigned short > & GetRawRefCounts() const
Definition RefCountVector.h:228
int Increment(int Index, unsigned short IncrementCount=1)
Definition RefCountVector.h:132
IndexIterator EndIndices() const
Definition RefCountVector.h:435
void Append(const FRefCountVector &Other)
Definition RefCountVector.h:89
bool IsValid(int Index) const
Definition RefCountVector.h:66
FilteredEnumerable FilteredIndices(TFunction< bool(int)> FilterFunc) const
Definition RefCountVector.h:527
void Rebuild(unsigned int Num, IterateFunc &&Iterate, AllocateRefCountFunc &&AllocateRefCount, IncrementRefCountFunc &&IncrementRefCount)
Definition RefCountVector.h:266
bool IsEmpty() const
Definition RefCountVector.h:46
int Allocate()
Definition RefCountVector.h:102
void SetRefCountUnsafe(int Index, unsigned short ToCount)
Definition RefCountVector.h:244
IndexEnumerable Indices() const
Definition RefCountVector.h:458
int GetRawRefCount(int Index) const
Definition RefCountVector.h:82
Definition IteratorUtil.h:72
Definition IteratorUtil.h:24
Definition DynamicVector.h:27
size_t GetByteCount() const
Definition DynamicVector.h:149
void Add(const Type &Data)
Definition DynamicVector.h:662
const Type & Back() const
Definition DynamicVector.h:167
void PopBack()
Definition DynamicVector.h:717
void Serialize(FArchive &Ar)
Definition DynamicVector.h:794
size_t Num() const
Definition DynamicVector.h:147
void Clear()
Definition DynamicVector.h:578
void Resize(unsigned int Count)
Definition DynamicVector.h:603
bool IsEmpty() const
Definition DynamicVector.h:145
size_t GetLength() const
Definition DynamicVector.h:146
void Fill(const Type &Value)
Definition DynamicVector.h:590
void SetNum(unsigned int Count)
Definition DynamicVector.h:143
Definition AdvancedWidgetsModule.cpp:13
U16 Index
Definition radfft.cpp:71
CORE_API static const FGuid GUID
Definition UE5MainStreamObjectVersion.h:22