12template <
typename TBaseType>
19 template <
typename TTestedType>
32template<
typename TBaseStruct,
typename TUStructType = UScriptStruct,
bool bTestInheritanceAtRuntime=WITH_STRUCTUTILS_DEBUG,
typename TContainer=FStructTypeBitSet::FBitSetContainer>
33struct TTypeBitSetBuilder :
TTypeBitSetBase<TTypeBitSetBuilder<TBaseStruct, TUStructType, bTestInheritanceAtRuntime>, TBaseStruct, TUStructType, TContainer&, bTestInheritanceAtRuntime>
57 return TContainer::CompareSetBits(
Other,
false);
74 using Super::operator+=;
75 using Super::operator-=;
76 using Super::operator+;
77 using Super::operator-;
114 ensureMsgf(&Source.StructTracker == &StructTracker,
TEXT(
"Assignment is only allowed between two instances created with the same StructTracker."));
131 ,
TEXT(
"Creating index for '%s' while it doesn't derive from the expected struct type %s")
154 ,
TEXT(
"Creating index for '%s' while it doesn't derive from the expected struct type %s")
174 static_assert(FTraits::template
IsValidType<T>,
"Given struct is not a valid type for this TypeBitSetBuilder.");
188 static_assert(FTraits::template
IsValidType<T>,
"Given struct is not a valid type for this TypeBitSetBuilder.");
189 static const int32 TypeIndex =
GetTypeIndex(*UE::StructUtils::GetAsUStruct<T>());
202 static_assert(FTraits::template
IsValidType<T>,
"Given struct is not a valid type for this TypeBitSetBuilder.");
224 static_assert(FTraits::template
IsValidType<T>,
"Given struct is not a valid type for this TypeBitSetBuilder.");
238 static_assert(FTraits::template
IsValidType<T>,
"Given struct is not a valid type for this TypeBitSetBuilder.");
261 static_assert(FTraits::template
IsValidType<T>,
"Given struct is not a valid type for this TypeBitSetBuilder.");
317 return *
this &
Other;
394 return StructTracker.
Num();
404 return StructTracker.
Num();
424 return !(*
this ==
Other);
443 template<
typename TOutStructType,
typename Allocator>
493 #if WITH_STRUCTUTILS_DEBUG
496 return static_cast<FString
>(Ar);
498 return TEXT(
"DEBUG INFO COMPILED OUT");
502#if WITH_STRUCTUTILS_DEBUG
514 Ar.
Logf(
TEXT(
"%s, "), *StructTracker.DebugGetStructTypeName(
Index).ToString());
550 return StructTracker.DebugGetAllStructTypes<
TUStructType>();
571 return StructTracker.DebugGetAllStructTypes<
TUStructType>();
594 return StructTracker;
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
@ INDEX_NONE
Definition CoreMiscDefines.h:150
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 > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition NameTypes.h:617
Definition OutputDevice.h:133
void Logf(const FmtType &Fmt)
Definition OutputDevice.h:234
Definition StringOutputDevice.h:21
Definition BitArray.h:350
static TBitArray BitwiseOR(const TBitArray< AllocatorA > &A, const TBitArray< AllocatorB > &B, EBitwiseOperatorFlags InFlags)
Definition BitArray.h:1321
Definition AssetRegistryState.h:50
U16 Index
Definition radfft.cpp:71
Definition StructTypeBitSet.h:275
const UStruct * GetStructType(const int32 StructTypeIndex) const
Definition StructTypeBitSet.h:316
UE_API int32 FindOrAddStructTypeIndex(const UStruct &InStructType)
Definition StructTypeBitSet.cpp:88
int32 Num() const
Definition StructTypeBitSet.h:331
Definition UnrealTypeTraits.h:40
Definition StructTypeBitSet.h:403
static const UStruct * GetBaseUStruct()
Definition StructTypeBitSet.h:484
FContainer StructTypesBitArray
Definition StructTypeBitSet.h:790
bool Contains(const FUStructType &InStructType) const
Definition StructTypeBitSet.h:571
void Add(const FUStructType &InStructType)
Definition StructTypeBitSet.h:510
void Remove(const FUStructType &InStructType)
Definition StructTypeBitSet.h:536
void ExportTypes(TArray< const TOutStructType *, Allocator > &OutTypes) const
Definition StructTypeBitSet.h:715
Definition TypeBitSetBuilder.h:34
TUStructType FUStructType
Definition TypeBitSetBuilder.h:38
TBaseStruct FBaseStruct
Definition TypeBitSetBuilder.h:40
TTypeBitSetBuilder(FStructTracker &InStructTracker, FConstBitSet &Source)
Definition TypeBitSetBuilder.h:85
SIZE_T GetAllocatedSize() const
Definition TypeBitSetBuilder.h:482
friend Super
Definition TypeBitSetBuilder.h:66
TTypeBitSetBuilder operator+(const TTypeBitSetBuilder &Other) const
Definition TypeBitSetBuilder.h:283
static const UStruct * GetBaseUStruct()
Definition StructTypeBitSet.h:484
FString DebugGetStringDesc() const
Definition TypeBitSetBuilder.h:491
bool operator!=(const TTypeBitSetBuilder &Other) const
Definition TypeBitSetBuilder.h:422
int32 Remove()
Definition TypeBitSetBuilder.h:236
void Remove(const TTypeBitSetBuilder &Other)
Definition TypeBitSetBuilder.h:248
int32 CountStoredTypes() const
Definition TypeBitSetBuilder.h:383
int32 GetTypeIndex() const
Definition TypeBitSetBuilder.h:186
static int32 GetTypeIndex(const FStructTracker &InStructTracker, const TUStructType &InStructType)
Definition TypeBitSetBuilder.h:148
bool operator==(const TTypeBitSetBuilder &Other) const
Definition TypeBitSetBuilder.h:412
bool HasNone(const TTypeBitSetBuilder &Other) const
Definition TypeBitSetBuilder.h:355
static TTypeBitSetBuilder GetTypeBitSet(const TUStructType &InStructType)
Definition TypeBitSetBuilder.h:200
TTypeBitSetBase< TTypeBitSetBuilder, TBaseStruct, TUStructType, TContainer &, bTestInheritanceAtRuntime > Super
Definition TypeBitSetBuilder.h:36
bool IsBitSet(const int32 BitIndex) const
Definition TypeBitSetBuilder.h:374
static int32 GetMaxNum(const FStructTracker &StructTracker)
Definition TypeBitSetBuilder.h:402
TTypeBitSetBuilder operator&(const TTypeBitSetBuilder &Other) const
Definition TypeBitSetBuilder.h:295
FContainer StructTypesBitArray
Definition StructTypeBitSet.h:790
const TUStructType * GetTypeAtIndex(const int32 Index)
Definition TypeBitSetBuilder.h:211
bool HasAny(const TTypeBitSetBuilder &Other) const
Definition TypeBitSetBuilder.h:345
TTypeBitSetBuilder operator|(const TTypeBitSetBuilder &Other) const
Definition TypeBitSetBuilder.h:305
bool IsEquivalent(const TTypeBitSetBuilder &Other) const
Definition TypeBitSetBuilder.h:325
bool Contains() const
Definition TypeBitSetBuilder.h:259
void ExportTypes(TFunctionRef< bool(const TUStructType *)> Callback) const
Definition TypeBitSetBuilder.h:464
bool IsEmpty() const
Definition TypeBitSetBuilder.h:364
const FBitSet FConstBitSet
Definition TypeBitSetBuilder.h:63
int32 Add()
Definition TypeBitSetBuilder.h:222
int32 GetMaxNum() const
Definition TypeBitSetBuilder.h:392
int32 GetTypeIndex(const TUStructType &InStructType) const
Definition TypeBitSetBuilder.h:125
TTypeBitSetBuilder GetOverlap(const TTypeBitSetBuilder &Other) const
Definition TypeBitSetBuilder.h:315
TTypeBitSetBuilder & operator=(const TTypeBitSetBuilder &Source)
Definition TypeBitSetBuilder.h:112
bool HasAll(const TTypeBitSetBuilder &Other) const
Definition TypeBitSetBuilder.h:335
void ExportTypes(TArray< const TOutStructType *, Allocator > &OutTypes) const
Definition TypeBitSetBuilder.h:444
TTypeBitSetBuilder operator-(const TTypeBitSetBuilder &Other) const
Definition TypeBitSetBuilder.h:271
static int32 GetTypeIndex(FStructTracker &InStructTracker)
Definition TypeBitSetBuilder.h:172
FStructTracker & GetStructTracker() const
Definition TypeBitSetBuilder.h:592
Definition TypeBitSetBuilder.h:14
static constexpr bool IsValidType
Definition TypeBitSetBuilder.h:20