6#include "Containers/Array.h"
8#include "IndexedHandle.generated.h"
10#if !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
11#define UE_DO_INDEXED_HANDLE_MANAGER_ID 1
13#define UE_DO_INDEXED_HANDLE_MANAGER_ID 0
40 return !operator==(
Other);
94 return !operator==(
Other);
108#if UE_DO_INDEXED_HANDLE_MANAGER_ID
139 return !operator==(
Other);
176#if UE_DO_INDEXED_HANDLE_MANAGER_ID
187template<
typename TIndexedHandle,
typename TIndexType,
typename TSerialType,
bool bOptimizeHandleReuse = false>
196#if UE_DO_INDEXED_HANDLE_MANAGER_ID
215 checkf(!
Handle->IsValid(),
TEXT(
"Free handle must be set invalid before reuse"));
220#if UE_DO_INDEXED_HANDLE_MANAGER_ID
255#if UE_DO_INDEXED_HANDLE_MANAGER_ID
281#if UE_DO_INDEXED_HANDLE_MANAGER_ID
316#if UE_DO_INDEXED_HANDLE_MANAGER_ID
323template<
typename TIndexedHandle,
typename TIndexType,
typename TSerialType,
bool bOptimizeHandleReuse>
326#if UE_DO_INDEXED_HANDLE_MANAGER_ID
327template<
typename TIndexedHandle,
typename TIndexType,
typename TSerialType,
bool bOptimizeHandleReuse>
331template<
typename TIndexedHandle,
bool bOptimizeHandleReuse = false>
336template<
typename TIndexedHandle,
bool bOptimizeHandleReuse = false>
#define check(expr)
Definition AssertionMacros.h:314
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
@ 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_int16
Definition NumericLimits.h:24
#define MAX_uint16
Definition NumericLimits.h:20
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
SizeType Remove(const ElementType &Item)
Definition Array.h:3091
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void Reset(SizeType NewSize=0)
Definition Array.h:2246
typename InAllocatorType::SizeType SizeType
Definition Array.h:675
UE_FORCEINLINE_HINT ElementType & Emplace_GetRef(ArgsType &&... Args) UE_LIFETIMEBOUND
Definition Array.h:2613
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
ElementType Pop(EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:1196
SizeType Insert(std::initializer_list< ElementType > InitList, const SizeType InIndex)
Definition Array.h:1875
UE_REWRITE auto LowerBound(const RangeType &Range, const ValueType &Value, SortPredicateType SortPredicate) -> decltype(GetNum(Range))
Definition BinarySearch.h:92
U16 Index
Definition radfft.cpp:71
Definition IndexedHandle.h:117
int16 GetIndex() const
Definition IndexedHandle.h:143
void SetSerialNumber(int16 InSerialNumber)
Definition IndexedHandle.h:165
bool operator==(const FCompactIndexedHandleBase &Other) const
Definition IndexedHandle.h:132
friend uint32 GetTypeHash(const FCompactIndexedHandleBase &Handle)
Definition IndexedHandle.h:167
bool IsValid() const
Definition IndexedHandle.h:146
uint16 GetSerialNumber() const
Definition IndexedHandle.h:164
bool operator!=(const FCompactIndexedHandleBase &Other) const
Definition IndexedHandle.h:137
void Invalidate()
Definition IndexedHandle.h:156
void SetIndex(int16 InIndex)
Definition IndexedHandle.h:159
Definition IndexedHandle.h:338
Definition IndexedHandle.h:77
friend uint32 GetTypeHash(const FIndexedHandleBase &Handle)
Definition IndexedHandle.h:100
uint32 GetSerialNumber() const
Definition IndexedHandle.h:97
bool operator==(const FIndexedHandleBase &Other) const
Definition IndexedHandle.h:87
bool operator!=(const FIndexedHandleBase &Other) const
Definition IndexedHandle.h:92
void SetSerialNumber(uint32 InSerialNumber)
Definition IndexedHandle.h:98
Definition IndexedHandle.h:189
const TArray< TIndexedHandle > & GetHandles() const
Definition IndexedHandle.h:267
FIndexedHandleManagerBase & operator=(const FIndexedHandleManagerBase &Other)
Definition IndexedHandle.h:275
TIndexedHandle GetNextHandle()
Definition IndexedHandle.h:201
FIndexedHandleManagerBase()
Definition IndexedHandle.h:194
int32 ShrinkHandles()
Definition IndexedHandle.h:291
FIndexedHandleManagerBase(const FIndexedHandleManagerBase &Other)=default
bool IsValidHandle(TIndexedHandle IndexedHandle) const
Definition IndexedHandle.h:253
int32 CalcNumUsedHandles() const
Definition IndexedHandle.h:270
bool RemoveHandle(TIndexedHandle IndexedHandle)
Definition IndexedHandle.h:227
static std::atomic< uint32 > ManagerIDCounter
Definition IndexedHandle.h:318
FHandleArray Handles
Definition IndexedHandle.h:311
TArray< TIndexedHandle > FHandleArray
Definition IndexedHandle.h:191
uint32 ManagerID
Definition IndexedHandle.h:319
TArray< TIndexType > FreeHandleIndices
Definition IndexedHandle.h:312
static std::atomic< TSerialType > SerialNumberCounter
Definition IndexedHandle.h:314
void Reset()
Definition IndexedHandle.h:302
Definition IndexedHandle.h:333
Definition IndexedHandle.h:23
bool operator!=(const FSimpleIndexedHandleBase &Other) const
Definition IndexedHandle.h:38
bool operator==(const FSimpleIndexedHandleBase &Other) const
Definition IndexedHandle.h:33
void SetIndex(int32 InIndex)
Definition IndexedHandle.h:60
void Invalidate()
Definition IndexedHandle.h:57
bool IsValid() const
Definition IndexedHandle.h:47
friend uint32 GetTypeHash(const FSimpleIndexedHandleBase &Handle)
Definition IndexedHandle.h:65
int32 GetIndex() const
Definition IndexedHandle.h:44
Definition NumericLimits.h:41