104 return ContainsNoCheck(
Value);
112 if (Storage[n] !=
Other.Storage[n])
127 while (Value <
Max && !Array.ContainsNoCheck(Value))
163 static_assert(BitWidth <
sizeof(
uint32) * 8,
"TPropertyCombinationSet cannot be used with BitWidths >= 32.");
241 static constexpr uint32 NumPackedValues = 2;
251 Storage =
Other.Storage;
287 Storage = Storage |
Other.Storage;
293 return Value == Storage;
298 return Storage ==
Other.Storage;
326 return FIterator(*
this, 0);
330 return FIterator(*
this, 1);
334 friend class FPropertyCombinationSetTest;
340template<
typename PackerClass>
358 Storage =
Other.Storage;
435 PackerClass::Unpack(Storage, Values,
Num);
448 return Storage ==
Other.Storage;
461 return Values[
Index];
477 PackerClass::Unpack(Storage, It.Values, It.Num);
484 PackerClass::Unpack(Storage, It.Values, It.Num);
547 static uint32 Values[] = { 0,1,2,3 };
554 static uint32 Values[] = { 1,2 };
570 check(Values[0] == 1 && Values[1] == 2);
628 static uint32 Values[] = { 0,1,2,3,4,5,6,7 };
638 static uint32 Values[] = { 1,2 };
645 static uint32 Values[] = { 1,4 };
652 static uint32 Values[] = { 1,6 };
659 static uint32 Values[] = { 2,4 };
666 static uint32 Values[] = { 2,5 };
673 static uint32 Values[] = { 3,4 };
680 static uint32 Values[] = { 3,5 };
687 static uint32 Values[] = { 3,6 };
694 static uint32 Values[] = { 5,6 };
701 static uint32 Values[] = { 1,2,4 };
708 static uint32 Values[] = { 3,5,6 };
732 check(Values[1] == 2 || Values[1] == 4 || Values[1] == 6);
733 return 8 + (Values[1] - 2) / 2;
735 check(Values[1] == 4 || Values[1] == 5);
736 return 11 + Values[1] - 4;
738 check(Values[1] == 4 || Values[1] == 5 || Values[1] == 6);
739 return 13 + Values[1] - 4;
741 check(Values[0] == 5 && Values[1] == 6);
750 check(Values[1] == 2 && Values[2] == 4);
755 check(Values[0] == 3 && Values[1] == 5 && Values[2] == 6);
#define check(expr)
Definition AssertionMacros.h:314
#define NumBitsPerDWORD
Definition ContainerAllocationPolicies.h:1371
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition PropertyCombinationSet.h:535
static constexpr uint32 NumPackedValues
Definition PropertyCombinationSet.h:541
static void Unpack(const uint32 Compressed, const uint32 *&OutValues, int &OutNum)
Definition PropertyCombinationSet.h:543
static constexpr uint32 MaxValue
Definition PropertyCombinationSet.h:540
static constexpr uint32 BitWidth
Definition PropertyCombinationSet.h:537
static constexpr uint32 ArrayMax
Definition PropertyCombinationSet.h:539
static uint32 Pack(const uint32 *Values, const int Num)
Definition PropertyCombinationSet.h:560
static constexpr uint32 StorageBitCount
Definition PropertyCombinationSet.h:538
Definition PropertyCombinationSet.h:604
static constexpr uint32 MaxValue
Definition PropertyCombinationSet.h:609
static constexpr uint32 StorageBitCount
Definition PropertyCombinationSet.h:607
static constexpr uint32 ArrayMax
Definition PropertyCombinationSet.h:608
static void Unpack(const uint32 Compressed, const uint32 *&OutValues, int &OutNum)
Definition PropertyCombinationSet.h:612
static constexpr uint32 BitWidth
Definition PropertyCombinationSet.h:606
static constexpr uint32 NumPackedValues
Definition PropertyCombinationSet.h:610
static uint32 Pack(const uint32 *Values, const int Num)
Definition PropertyCombinationSet.h:720
Definition ArrayView.h:139
Definition PropertyCombinationSet.h:342
void Load(const TBitArray<> &ArchiveBits, uint32 BitOffset)
Definition PropertyCombinationSet.h:367
FIterator end()
Definition PropertyCombinationSet.h:481
void Add(uint32 PropertyCombination)
Definition PropertyCombinationSet.h:387
FIterator begin()
Definition PropertyCombinationSet.h:474
static constexpr uint32 MaxValue
Definition PropertyCombinationSet.h:347
TPropertyCombinationSetHardcoded(const TPropertyCombinationSetHardcoded< PackerClass > &Other)
Definition PropertyCombinationSet.h:356
TPropertyCombinationSetHardcoded(const TBitArray<> &ArchivedBits, uint32 BitOffset=0)
Definition PropertyCombinationSet.h:361
bool operator==(const TPropertyCombinationSetHardcoded< PackerClass > &Other) const
Definition PropertyCombinationSet.h:446
bool Contains(uint32 Value) const
Definition PropertyCombinationSet.h:430
friend class FPropertyCombinationSetTest
Definition PropertyCombinationSet.h:490
void Save(uint32 *ArchiveBits) const
Definition PropertyCombinationSet.h:382
static constexpr uint32 ArrayMax
Definition PropertyCombinationSet.h:348
static constexpr uint32 NumPackedValues
Definition PropertyCombinationSet.h:349
void Save(TBitArray<> &ArchiveBits, uint32 BitOffset) const
Definition PropertyCombinationSet.h:372
void Load(const uint32 *ArchiveBits)
Definition PropertyCombinationSet.h:377
static constexpr uint32 StorageWordCount
Definition PropertyCombinationSet.h:346
static constexpr uint32 StorageBitCount
Definition PropertyCombinationSet.h:345
void AddRange(TPropertyCombinationSetHardcoded< PackerClass > &Other)
Definition PropertyCombinationSet.h:402
static constexpr uint32 BitWidth
Definition PropertyCombinationSet.h:344
TPropertyCombinationSetHardcoded()
Definition PropertyCombinationSet.h:351
bool operator==(const TPropertyCombinationSet< 1 > &Other) const
Definition PropertyCombinationSet.h:296
FIterator end()
Definition PropertyCombinationSet.h:328
void Save(TBitArray<> &ArchiveBits, uint32 BitOffset) const
Definition PropertyCombinationSet.h:264
FIterator begin()
Definition PropertyCombinationSet.h:324
void Add(uint32 PropertyCombination)
Definition PropertyCombinationSet.h:279
TPropertyCombinationSet(const TBitArray<> &ArchivedBits, uint32 BitOffset=0)
Definition PropertyCombinationSet.h:254
bool Contains(uint32 Value) const
Definition PropertyCombinationSet.h:290
void Load(const TBitArray<> &ArchiveBits, uint32 BitOffset)
Definition PropertyCombinationSet.h:259
TPropertyCombinationSet()
Definition PropertyCombinationSet.h:244
void Save(uint32 *ArchiveBits) const
Definition PropertyCombinationSet.h:274
TPropertyCombinationSet(const TPropertyCombinationSet< 1 > &Other)
Definition PropertyCombinationSet.h:249
void Load(const uint32 *ArchiveBits)
Definition PropertyCombinationSet.h:269
void AddRange(TPropertyCombinationSet< 1 > &Other)
Definition PropertyCombinationSet.h:285
Definition PropertyCombinationSet.h:33
void Load(const uint32 *ArchiveBits)
Definition PropertyCombinationSet.h:69
void AddRange(TPropertyCombinationSet< BitWidth > &Other)
Definition PropertyCombinationSet.h:93
static constexpr uint32 StorageWordCount
Definition PropertyCombinationSet.h:36
void Save(TBitArray<> &ArchiveBits, uint32 BitOffset) const
Definition PropertyCombinationSet.h:64
static constexpr uint32 StorageBitCount
Definition PropertyCombinationSet.h:35
TPropertyCombinationSet(const TPropertyCombinationSet< BitWidth > &Other)
Definition PropertyCombinationSet.h:47
FIterator begin()
Definition PropertyCombinationSet.h:149
bool Contains(uint32 Value) const
Definition PropertyCombinationSet.h:101
TPropertyCombinationSet(const TBitArray<> &ArchivedBits, uint32 BitOffset=0)
Definition PropertyCombinationSet.h:53
TPropertyCombinationSet()
Definition PropertyCombinationSet.h:40
void Add(uint32 PropertyCombination)
Definition PropertyCombinationSet.h:82
FIterator end()
Definition PropertyCombinationSet.h:153
void Load(const TBitArray<> &ArchiveBits, uint32 BitOffset)
Definition PropertyCombinationSet.h:59
static constexpr uint32 MaxValue
Definition PropertyCombinationSet.h:37
bool operator==(const TPropertyCombinationSet< BitWidth > &Other) const
Definition PropertyCombinationSet.h:107
void Save(uint32 *ArchiveBits) const
Definition PropertyCombinationSet.h:74
UE_REWRITE bool IsSorted(const RangeType &Range)
Definition IsSorted.h:66
U16 Index
Definition radfft.cpp:71
static UE_FORCEINLINE_HINT void * Memcpy(void *Dest, const void *Src, SIZE_T Count)
Definition UnrealMemory.h:160
static UE_FORCEINLINE_HINT void * Memset(void *Dest, uint8 Char, SIZE_T Count)
Definition UnrealMemory.h:119
Definition PropertyCombinationSet.h:452
FIterator & operator++()
Definition PropertyCombinationSet.h:454
uint32 operator*()
Definition PropertyCombinationSet.h:459
bool operator!=(const FIterator &Other) const
Definition PropertyCombinationSet.h:463
Definition PropertyCombinationSet.h:121
FIterator & operator++()
Definition PropertyCombinationSet.h:123
bool operator!=(const FIterator &Other) const
Definition PropertyCombinationSet.h:134
uint32 operator*()
Definition PropertyCombinationSet.h:133
bool operator!=(const FIterator &Other) const
Definition PropertyCombinationSet.h:310
uint32 operator*()
Definition PropertyCombinationSet.h:309
FIterator & operator++()
Definition PropertyCombinationSet.h:304