5#include "Containers/Array.h"
15 class FNetBitArrayView;
19 class FNetBitArrayRangedForConstIterator;
25#ifndef UE_NETBITARRAY_VALIDATE
26#if (UE_BUILD_SHIPPING || UE_BUILD_TEST)
27# define UE_NETBITARRAY_VALIDATE 0
29# define UE_NETBITARRAY_VALIDATE 1
33#if UE_NETBITARRAY_VALIDATE
34# define UE_NETBITARRAY_CHECK(x) check(x)
36# define UE_NETBITARRAY_CHECK(...)
39#define UE_NETBITARRAY_VALIDATE_BOTH_COMPATIBLE(lhs,rhs) UE_NETBITARRAY_CHECK((lhs).GetData() != (rhs).GetData() && (lhs).GetNumBits() == (rhs).GetNumBits())
155 checkf(WordIndex < (
uint32)Storage.
Num(),
TEXT(
"NetBitArray index out of bounds: %u / max %u"), WordIndex, Storage.
Num());
156 return Storage.
GetData()[WordIndex];
162 checkf(WordIndex < (
uint32)Storage.
Num(),
TEXT(
"NetBitArray index out of bounds: %u / max %u"), WordIndex, Storage.
Num());
163 return Storage.
GetData()[WordIndex];
297 template<
typename T,
typename V>
301 template <
typename WordOpFunctor1,
typename WordOpFunctor2,
typename UserFunctor>
305 template<
typename T,
typename V>
309 template<
typename T,
typename V,
typename Predicate>
316 Private::FNetBitArrayRangedForConstIterator
begin()
const;
317 Private::FNetBitArrayRangedForConstIterator
end()
const;
321 void ClearPaddingBits();
324 void Reserve(
uint32 BitCount);
455 checkf(WordIndex < WordCount,
TEXT(
"NetBitArrayView index out of bounds: %u / max %u"), WordIndex, WordCount);
456 return Storage[WordIndex];
462 checkf(WordIndex < WordCount,
TEXT(
"NetBitArrayView index out of bounds: %u / max %u"), WordIndex, WordCount);
463 return Storage[WordIndex];
521 template <
typename T>
525 template <
typename T>
533 template <
typename T,
typename V>
537 template <
typename WordOpFunctor1,
typename WordOpFunctor2,
typename UserFunctor>
541 template <
typename T,
typename V>
545 template<
typename T,
typename V,
typename Predicate>
554 Private::FNetBitArrayRangedForConstIterator
begin()
const;
555 Private::FNetBitArrayRangedForConstIterator
end()
const;
577 static constexpr uint32 WordBitCount =
sizeof(StorageWordType) * 8u;
579 static StorageWordType GetLastWordMask(
uint32 BitCount)
581 return (~StorageWordType(0) >> (
uint32(-
int32(BitCount)) & (WordBitCount - 1)));
584 static bool IsAnyBitSet(
const StorageWordType* Storage,
const uint32 WordCount)
597 static bool IsAnyBitSet(
const StorageWordType* Storage,
const uint32 BitCount,
const uint32 StartIndex,
const uint32 Count)
600 if ((
Count == 0) | (StartIndex >= BitCount))
628 static void SetBits(StorageWordType* Storage,
const uint32 BitCount,
const uint32 StartIndex,
const uint32 Count)
650 static void ClearBits(StorageWordType* Storage,
const uint32 BitCount,
const uint32 StartIndex,
const uint32 Count)
672 static void SetBit(StorageWordType* Storage,
const uint32 BitCount,
const uint32 Index)
677 const StorageWordType
WordMask = (StorageWordType(1) << (
Index & (WordBitCount - 1)));
682 static void SetBitValue(StorageWordType* Storage,
const uint32 BitCount,
const uint32 Index,
const bool bValue)
687 const StorageWordType
WordMask = (StorageWordType(1) << (
Index & (WordBitCount - 1)));
688 const StorageWordType ValueMask = bValue ?
WordMask : StorageWordType(0);
690 Storage[WordIndex] = (Storage[WordIndex] &
~WordMask) | ValueMask;
693 static void ClearBit(StorageWordType* Storage,
const uint32 BitCount,
const uint32 Index)
698 const StorageWordType
WordMask = (StorageWordType(1) << (
Index & (WordBitCount - 1)));
703 static bool GetBit(
const StorageWordType* Storage,
const uint32 BitCount,
const uint32 Index)
708 const StorageWordType
WordMask = (StorageWordType(1) << (
Index & (WordBitCount - 1)));
710 return (Storage[WordIndex] &
WordMask) != 0u;
713 static void OrBitValue(StorageWordType* Storage,
const uint32 BitCount,
const uint32 Index,
const bool bValue)
718 const StorageWordType
WordMask = (StorageWordType(1) << (
Index & (WordBitCount - 1)));
719 const StorageWordType ValueMask = bValue ?
WordMask : StorageWordType(0);
721 Storage[WordIndex] = Storage[WordIndex] | ValueMask;
724 static void AndBitValue(StorageWordType* Storage,
const uint32 BitCount,
const uint32 Index,
const bool bValue)
729 const StorageWordType
WordMask = (StorageWordType(1) << (
Index & (WordBitCount - 1)));
732 Storage[WordIndex] = Storage[WordIndex] & ValueMask;
735 static uint32 FindFirstZero(
const StorageWordType* Storage,
const uint32 WordCount,
const uint32 BitCount)
740 if (
Word != StorageWordType(~StorageWordType(0)))
742 const uint32 Index = CurrentBitIndex + FPlatformMath::CountTrailingZeros(~
Word);
751 static uint32 FindFirstOne(
const StorageWordType* Storage,
const uint32 WordCount,
const uint32 BitCount)
758 const uint32 Index = CurrentBitIndex + FPlatformMath::CountTrailingZeros(
Word);
767 static uint32 FindFirstZero(
const StorageWordType* Storage,
const uint32 WordCount,
const uint32 BitCount,
const uint32 StartIndex)
770 uint32 CurrentBitIndex = StartIndex & ~(WordBitCount - 1U);
776 if (
Word != StorageWordType(~StorageWordType(0)))
778 const uint32 Index = CurrentBitIndex + FPlatformMath::CountTrailingZeros(~
Word);
787 static uint32 FindFirstOne(
const StorageWordType* Storage,
const uint32 WordCount,
const uint32 BitCount,
const uint32 StartIndex)
789 uint32 CurrentBitIndex = StartIndex & ~(WordBitCount - 1U);
799 const uint32 Index = CurrentBitIndex + FPlatformMath::CountTrailingZeros(
Word);
808 static uint32 FindLastZero(
const StorageWordType* Storage,
const uint32 WordCount,
const uint32 BitCount)
810 StorageWordType
WordMask = GetLastWordMask(BitCount);
824 WordMask = StorageWordType(~StorageWordType(0));
830 static uint32 FindLastOne(
const StorageWordType* Storage,
const uint32 WordCount,
const uint32 BitCount)
839 const uint32 Index = BitOffset + WordBitCount - 1U - FPlatformMath::CountLeadingZeros(
Word);
859 template<
typename Functor>
static void Combine(StorageWordType* Storage,
const StorageWordType*
OtherStorage,
const uint32 WordCount, Functor&&
WordOp)
875 static bool IsEqual(
const StorageWordType* Storage,
const StorageWordType*
OtherStorage,
const uint32 WordCount)
877 StorageWordType Result = 0U;
885 template<
typename T>
static void ForAllSetBits(
const StorageWordType* Storage,
const uint32 WordCount,
const uint32 BitCount, T&& Functor)
898 if (CurrentWord & 0x1)
930 if (CurrentWord & 0x1)
940 template<
typename T>
static void ForAllUnsetBits(
const StorageWordType* Storage,
const uint32 WordCount,
const uint32 BitCount, T&& Functor)
956 if (CurrentWord & 0x1)
966 template<
typename T,
typename V>
static void ForAllSetBits(
const StorageWordType*
StorageA,
const StorageWordType*
StorageB,
const uint32 WordCount,
const uint32 BitCount, T&&
WordOpFunctor, V&& Functor)
982 if (CurrentWord & 0x1)
1009 if (CurrentWord & 0x1)
1019 template<
typename T,
typename V,
typename Predicate>
static void ForAllExclusiveBitsByPredicate(
const StorageWordType*
StorageA,
const StorageWordType*
StorageB,
const uint32 WordCount,
const uint32 BitCount, T&&
FunctorA, V&&
FunctorB, Predicate&&
Pred)
1075class FNetBitArrayRangedForConstIterator
1078 FNetBitArrayRangedForConstIterator();
1080 FNetBitArrayRangedForConstIterator& operator++();
1082 bool operator!=(
const FNetBitArrayRangedForConstIterator& It)
const;
1085 uint32 operator*()
const;
1091 enum class ERangeStart :
unsigned
1099 void AdvanceToNextSetBit();
1104 uint32 CurrentBitIndex = 0;
1120 if (BitCount !=
Other.BitCount)
1145 Storage.
Reset(WordCount);
1154 Storage.
Reset(WordCount);
1160 Reserve(Source.GetNumBits());
1167 Reserve(Source.GetNumBits());
1199 return static_cast<uint32>(Storage.
Num());
1215 return FNetBitArrayHelper::IsAnyBitSet(Storage.
GetData(), Storage.
Num());
1220 return ((
Count == 1U) ?
GetBit(StartIndex) : FNetBitArrayHelper::IsAnyBitSet(Storage.
GetData(), BitCount, StartIndex,
Count));
1230 FNetBitArrayHelper::SetBit(Storage.
GetData(), BitCount,
Index);
1235 FNetBitArrayHelper::SetBitValue(Storage.
GetData(), BitCount,
Index, bValue);
1240 FNetBitArrayHelper::SetBits(Storage.
GetData(), BitCount, StartIndex,
Count);
1245 FNetBitArrayHelper::ClearBits(Storage.
GetData(), BitCount, StartIndex,
Count);
1250 FNetBitArrayHelper::ClearBit(Storage.
GetData(), BitCount,
Index);
1255 return FNetBitArrayHelper::GetBit(Storage.
GetData(), BitCount,
Index);
1260 FNetBitArrayHelper::OrBitValue(Storage.
GetData(), BitCount,
Index, bValue);
1265 FNetBitArrayHelper::AndBitValue(Storage.
GetData(), BitCount,
Index, bValue);
1270 return FNetBitArrayHelper::FindFirstZero(Storage.
GetData(), Storage.
Num(), BitCount);
1275 return FNetBitArrayHelper::FindFirstOne(Storage.
GetData(), Storage.
Num(), BitCount);
1280 return FNetBitArrayHelper::FindFirstZero(Storage.
GetData(), Storage.
Num(), BitCount, StartIndex);
1285 return FNetBitArrayHelper::FindFirstOne(Storage.
GetData(), Storage.
Num(), BitCount, StartIndex);
1290 return FNetBitArrayHelper::FindLastZero(Storage.
GetData(), Storage.
Num(), BitCount);
1295 return FNetBitArrayHelper::FindLastOne(Storage.
GetData(), Storage.
Num(), BitCount);
1305 return FNetBitArrayHelper::CountSetBits(Storage.
GetData(), BitCount, StartIndex,
Count);
1345 FNetBitArrayHelper::CombineMultiple(Storage.
GetData(), ArrayA.Storage.
GetData(), ArrayB.Storage.
GetData(), Storage.
Num(), Op,
Op2);
1350 FNetBitArrayHelper::ForAllSetBits(Storage.
GetData(), Storage.
Num(), BitCount, Functor);
1360 FNetBitArrayHelper::ForAllUnsetBits(Storage.
GetData(), Storage.
Num(), BitCount, Functor);
1366 FNetBitArrayHelper::ForAllSetBits(
A.Storage.GetData(),
B.Storage.GetData(),
A.Storage.Num(),
A.BitCount,
WordOpFunctor, Functor);
1373 FNetBitArrayHelper::ForAllSetBitsMultiple(
A.Storage.GetData(),
B.Storage.GetData(),
C.Storage.GetData(),
A.Storage.Num(),
A.BitCount,
Op1,
Op2, Functor);
1379 FNetBitArrayHelper::ForAllExclusiveBits(
A.Storage.GetData(),
B.Storage.GetData(),
A.Storage.Num(),
A.BitCount,
FunctorA,
FunctorB);
1385 FNetBitArrayHelper::ForAllExclusiveBitsByPredicate(
A.Storage.GetData(),
B.Storage.GetData(),
A.Storage.Num(),
A.BitCount,
FunctorA,
FunctorB,
Pred);
1388inline void FNetBitArray::ClearPaddingBits()
1402 return Private::FNetBitArrayRangedForConstIterator(Storage.
GetData(), BitCount, Private::FNetBitArrayRangedForConstIterator::ERangeStart::Begin);
1407 return Private::FNetBitArrayRangedForConstIterator(Storage.
GetData(), BitCount, Private::FNetBitArrayRangedForConstIterator::ERangeStart::End);
1428, WordCount(CalculateRequiredWordCount(
BitCountIn))
1433 Storage =
const_cast<uint32*
>(&BitCount);
1447 UE_NETBITARRAY_CHECK((BitCount == 0) || ((Storage[WordCount - 1] & ~GetLastWordMask()) == 0u));
1452 if (BitCount !=
Other.BitCount)
1462 return FNetBitArrayHelper::IsAnyBitSet(Storage, WordCount);
1467 return ((
Count == 1U) ?
GetBit(StartIndex) : FNetBitArrayHelper::IsAnyBitSet(
GetData(), BitCount, StartIndex,
Count));
1484 Storage[WordCount - 1] = Storage[WordCount - 1] & GetLastWordMask();
1514 FNetBitArrayHelper::SetBit(Storage, BitCount,
Index);
1519 FNetBitArrayHelper::SetBitValue(Storage, BitCount,
Index, bValue);
1524 FNetBitArrayHelper::SetBits(Storage, BitCount, StartIndex,
Count);
1529 FNetBitArrayHelper::ClearBits(Storage, BitCount, StartIndex,
Count);
1534 FNetBitArrayHelper::ClearBit(Storage, BitCount,
Index);
1539 return FNetBitArrayHelper::GetBit(Storage, BitCount,
Index);
1544 FNetBitArrayHelper::OrBitValue(Storage, BitCount,
Index, bValue);
1549 FNetBitArrayHelper::AndBitValue(Storage, BitCount,
Index, bValue);
1554 return FNetBitArrayHelper::FindFirstZero(Storage, WordCount, BitCount);
1559 return FNetBitArrayHelper::FindFirstOne(Storage, WordCount, BitCount);
1564 return FNetBitArrayHelper::FindFirstZero(Storage, WordCount, BitCount, StartIndex);
1569 return FNetBitArrayHelper::FindFirstOne(Storage, WordCount, BitCount, StartIndex);
1574 return FNetBitArrayHelper::FindLastZero(Storage, WordCount, BitCount);
1579 return FNetBitArrayHelper::FindLastOne(Storage, WordCount, BitCount);
1599 return FNetBitArrayHelper::CountSetBits(Storage, BitCount, StartIndex,
Count);
1612 FNetBitArrayHelper::Combine(Storage,
Other.Storage, WordCount,
WordOp);
1619 FNetBitArrayHelper::CombineMultiple(Storage, ArrayA.Storage, ArrayB.Storage, WordCount, Op,
Op2);
1624 FNetBitArrayHelper::ForAllSetBits(Storage, WordCount, BitCount, Functor);
1629 FNetBitArrayHelper::ForAllSetBitsInRange(Storage, WordCount, BitCount,
StartBit,
EndBit, Functor);
1634 FNetBitArrayHelper::ForAllUnsetBits(Storage, WordCount, BitCount, Functor);
1637template <
typename T,
typename V>
1641 FNetBitArrayHelper::ForAllSetBits(
A.Storage,
B.Storage,
A.WordCount,
A.BitCount,
WordOpFunctor, Functor);
1644template <
typename WordOpFunctor1,
typename WordOpFunctor2,
typename UserFunctor>
1649 FNetBitArrayHelper::ForAllSetBitsMultiple(
A.Storage,
B.Storage,
C.Storage,
A.WordCount,
A.BitCount,
Op1,
Op2, Functor);
1652template <
typename T,
typename V>
1656 FNetBitArrayHelper::ForAllExclusiveBits(
A.Storage,
B.Storage,
A.WordCount,
A.BitCount,
FunctorA,
FunctorB);
1659template <
typename T,
typename V,
typename Predicate>
1663 FNetBitArrayHelper::ForAllExclusiveBitsByPredicate(
A.Storage,
B.Storage,
A.WordCount,
A.BitCount,
FunctorA,
FunctorB,
Pred);
1668 return Private::FNetBitArrayRangedForConstIterator(Storage, BitCount, Private::FNetBitArrayRangedForConstIterator::ERangeStart::Begin);
1673 return Private::FNetBitArrayRangedForConstIterator(Storage, BitCount, Private::FNetBitArrayRangedForConstIterator::ERangeStart::End);
1711inline FNetBitArrayRangedForConstIterator::FNetBitArrayRangedForConstIterator()
1718, WordCount(FNetBitArrayView::CalculateRequiredWordCount(BitCount))
1723 AdvanceToNextSetBit();
1726inline FNetBitArrayRangedForConstIterator& FNetBitArrayRangedForConstIterator::operator++()
1728 AdvanceToNextSetBit();
1732inline uint32 FNetBitArrayRangedForConstIterator::operator*()
const
1734 return CurrentBitIndex;
1737inline bool FNetBitArrayRangedForConstIterator::operator!=(
const FNetBitArrayRangedForConstIterator& It)
const
1740 return this->CurrentBitIndex != It.CurrentBitIndex;
1743inline void FNetBitArrayRangedForConstIterator::AdvanceToNextSetBit()
1745 using SignedWordType =
typename std::make_signed<FNetBitArrayBase::StorageWordType>::type;
1747 uint32 WordIt = CurrentBitIndex/FNetBitArrayBase::WordBitCount;
1748 while (CurrentWord == 0U)
1753 CurrentBitIndex = BitCount;
1759 CurrentBitIndex += FNetBitArrayBase::WordBitCount;
1762 const uint32 NewBitIndex = (CurrentBitIndex & ~(FNetBitArrayBase::WordBitCount - 1U)) + FPlatformMath::CountTrailingZeros(CurrentWord);
1763 CurrentBitIndex = FPlatformMath::Min(
NewBitIndex, BitCount);
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
void Init()
Definition LockFreeList.h:4
#define UE_NETBITARRAY_VALIDATE_BOTH_COMPATIBLE(lhs, rhs)
Definition NetBitArray.h:39
#define UE_NETBITARRAY_CHECK(x)
Definition NetBitArray.h:34
UE_FORCEINLINE_HINT SizeType AddUninitialized()
Definition Array.h:1664
UE_REWRITE SizeType Num() const
Definition Array.h:1144
void SetNumZeroed(SizeType NewNum, EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:2340
void Reset(SizeType NewSize=0)
Definition Array.h:2246
UE_NODEBUG UE_FORCEINLINE_HINT ElementType * GetData() UE_LIFETIMEBOUND
Definition Array.h:1027
SizeType AddZeroed()
Definition Array.h:2755
void Empty(SizeType Slack=0)
Definition Array.h:2273
Definition NetBitArray.h:45
static constexpr StorageWordType AndNotOp(StorageWordType A, StorageWordType B)
Definition NetBitArray.h:58
static constexpr StorageWordType OrOp(StorageWordType A, StorageWordType B)
Definition NetBitArray.h:59
uint32 StorageWordType
Definition NetBitArray.h:50
EResetOnInitType
Definition NetBitArray.h:48
@ ResetOnInit
Definition NetBitArray.h:48
static uint32 RoundUpToMaxWordBitCount(uint32 Value)
Definition NetBitArray.h:63
static constexpr uint32 InvalidIndex
Definition NetBitArray.h:54
static constexpr StorageWordType XorOp(StorageWordType A, StorageWordType B)
Definition NetBitArray.h:60
static constexpr uint32 WordBitCount
Definition NetBitArray.h:51
ENoResetNoValidateType
Definition NetBitArray.h:47
@ NoResetNoValidate
Definition NetBitArray.h:47
static constexpr StorageWordType AndOp(StorageWordType A, StorageWordType B)
Definition NetBitArray.h:57
Definition NetBitArray.h:571
Definition NetBitArray.h:337
FNetBitArrayView()
Definition NetBitArray.h:1419
uint32 FindFirstOne() const
Definition NetBitArray.h:1557
void ForAllSetBits(T &&Functor) const
Definition NetBitArray.h:1622
StorageWordType * GetData() UE_LIFETIMEBOUND
Definition NetBitArray.h:450
static void ForAllSetBitsMultiple(const FNetBitArrayView &A, WordOpFunctor1 &&Op1, const FNetBitArrayView &B, WordOpFunctor2 &&Op2, const FNetBitArrayView &C, UserFunctor &&Functor)
Definition NetBitArray.h:1645
void ForAllUnsetBits(T &&Functor) const
Definition NetBitArray.h:1632
bool IsAnyBitSet() const
Definition NetBitArray.h:1460
void ClearBits(uint32 StartIndex, uint32 Count)
Definition NetBitArray.h:1527
uint32 GetNumBits() const
Definition NetBitArray.h:1587
bool IsBitSet(uint32 Index) const
Definition NetBitArray.h:354
StorageWordType GetWord(uint32 WordIndex) const UE_LIFETIMEBOUND
Definition NetBitArray.h:453
void ClearBit(uint32 Index) const
Definition NetBitArray.h:1532
void Reset()
Definition NetBitArray.h:367
uint32 CountSetBits(uint32 StartIndex=0, uint32 Count=~0U) const
Definition NetBitArray.h:1597
static void ForAllExclusiveBitsByPredicate(const FNetBitArrayView &A, const FNetBitArrayView &B, T &&FunctorA, V &&FunctorB, Predicate &&Pred)
Definition NetBitArray.h:1660
const StorageWordType * GetDataChecked(uint32 MaxWordIterationCount) const UE_LIFETIMEBOUND
Definition NetBitArray.h:430
uint32 GetSetBitIndices(uint32 StartIndex, uint32 Count, uint32 *OutIndices, uint32 OutIndicesCapacity) const
Definition NetBitArray.h:1592
void AndBitValue(uint32 Index, bool bValue)
Definition NetBitArray.h:1547
void Copy(const FNetBitArrayView &Other)
Definition NetBitArray.h:1494
static void ForAllExclusiveBits(const FNetBitArrayView &A, const FNetBitArrayView &B, T &&FunctorA, V &&FunctorB)
Definition NetBitArray.h:1653
Private::FNetBitArrayRangedForConstIterator begin() const
Definition NetBitArray.h:1666
Private::FNetBitArrayRangedForConstIterator end() const
Definition NetBitArray.h:1671
void SetBit(uint32 Index)
Definition NetBitArray.h:1512
void CombineMultiple(WordOpFunctor1 &&Op, const FNetBitArrayView &ArrayA, WordOpFunctor2 &&Op2, const FNetBitArrayView &ArrayB)
Definition NetBitArray.h:1615
void Set(const FNetBitArrayView &First, WordOpFunctor &&WordOp, const FNetBitArrayView &Second)
Definition NetBitArray.h:1602
void ClearPaddingBits()
Definition NetBitArray.h:1480
bool operator==(const FNetBitArrayView &Other) const
Definition NetBitArray.h:1450
uint32 FindFirstZero() const
Definition NetBitArray.h:1552
void SetBits(uint32 StartIndex, uint32 Count)
Definition NetBitArray.h:1522
uint32 FindLastOne() const
Definition NetBitArray.h:1577
void SetAllBits()
Definition NetBitArray.h:1488
StorageWordType * GetDataChecked(uint32 MaxWordIterationCount) UE_LIFETIMEBOUND
Definition NetBitArray.h:440
const StorageWordType * GetData() const UE_LIFETIMEBOUND
Definition NetBitArray.h:447
void SetBitValue(uint32 Index, bool bValue)
Definition NetBitArray.h:1517
void ForAllSetBitsInRange(const uint32 StartBit, const uint32 EndBit, T &&Functor) const
Definition NetBitArray.h:1627
bool IsNoBitSet() const
Definition NetBitArray.h:1470
uint32 FindLastZero() const
Definition NetBitArray.h:1572
StorageWordType & GetWord(uint32 WordIndex) UE_LIFETIMEBOUND
Definition NetBitArray.h:460
NETCORE_API FString ToString() const
Definition NetBitArray.cpp:23
bool GetBit(uint32 Index) const
Definition NetBitArray.h:1537
uint32 GetNumWords() const
Definition NetBitArray.h:1582
void OrBitValue(uint32 Index, bool bValue)
Definition NetBitArray.h:1542
void ClearAllBits()
Definition NetBitArray.h:1475
static constexpr uint32 CalculateRequiredWordCount(uint32 BitCount)
Definition NetBitArray.h:1414
void Combine(const FNetBitArrayView &Other, WordOpFunctor &&WordOp)
Definition NetBitArray.h:1609
Definition NetBitArray.h:74
const StorageWordType * GetData() const UE_LIFETIMEBOUND
Definition NetBitArray.h:147
void Reset()
Definition NetBitArray.h:168
void AndBitValue(uint32 Index, bool bValue)
Definition NetBitArray.h:1263
FNetBitArray()
Definition NetBitArray.h:1113
Private::FNetBitArrayRangedForConstIterator begin() const
Definition NetBitArray.h:1400
StorageWordType * GetData() UE_LIFETIMEBOUND
Definition NetBitArray.h:150
void AddBits(uint32 BitCount)
Definition NetBitArray.h:1187
void ForAllSetBitsInRange(const uint32 StartBit, const uint32 EndBit, T &&Functor) const
Definition NetBitArray.h:1353
void ForAllUnsetBits(T &&Functor) const
Definition NetBitArray.h:1358
const StorageWordType * GetDataChecked(uint32 MaxWordIterationCount) const UE_LIFETIMEBOUND
Definition NetBitArray.h:130
NETCORE_API FString ToString() const
Definition NetBitArray.cpp:15
void Set(const FNetBitArray &First, WordOpFunctor &&WordOp, const FNetBitArray &Second)
Definition NetBitArray.h:1328
bool GetBit(uint32 Index) const
Definition NetBitArray.h:1253
void SetBitValue(uint32 Index, bool bValue)
Definition NetBitArray.h:1233
void ClearBits(uint32 StartIndex, uint32 Count)
Definition NetBitArray.h:1243
StorageWordType GetWord(uint32 WordIndex) const UE_LIFETIMEBOUND
Definition NetBitArray.h:153
void InitAndCopy(const FNetBitArray &Source)
Definition NetBitArray.h:1158
uint32 FindFirstOne() const
Definition NetBitArray.h:1273
uint32 CountSetBits(uint32 StartIndex=0, uint32 Count=~0U) const
Definition NetBitArray.h:1303
void Copy(const FNetBitArray &Other)
Definition NetBitArray.h:1308
void OrBitValue(uint32 Index, bool bValue)
Definition NetBitArray.h:1258
bool IsNoBitSet() const
Definition NetBitArray.h:1223
void SetBits(uint32 StartIndex, uint32 Count)
Definition NetBitArray.h:1238
void ForAllSetBits(T &&Functor) const
Definition NetBitArray.h:1348
void SetNumBits(uint32 BitCount)
Definition NetBitArray.h:1178
uint32 FindFirstZero() const
Definition NetBitArray.h:1268
void Combine(const FNetBitArray &Other, WordOpFunctor &&WordOp)
Definition NetBitArray.h:1335
bool IsAnyBitSet() const
Definition NetBitArray.h:1213
void SetBit(uint32 Index)
Definition NetBitArray.h:1228
void SetAllBits()
Definition NetBitArray.h:1207
void ClearBit(uint32 Index)
Definition NetBitArray.h:1248
static void ForAllSetBitsMultiple(const FNetBitArray &A, WordOpFunctor1 &&Op1, const FNetBitArray &B, WordOpFunctor2 &&Op2, const FNetBitArray &C, UserFunctor &&Functor)
Definition NetBitArray.h:1369
void ClearAllBits()
Definition NetBitArray.h:1202
void Init(uint32 BitCount)
Definition NetBitArray.h:1140
StorageWordType * GetDataChecked(uint32 MaxWordIterationCount) UE_LIFETIMEBOUND
Definition NetBitArray.h:140
bool operator==(const FNetBitArray &Other) const
Definition NetBitArray.h:1118
void CombineMultiple(WordOpFunctor1 &&Op, const FNetBitArray &ArrayA, WordOpFunctor2 &&Op2, const FNetBitArray &ArrayB)
Definition NetBitArray.h:1341
static void ForAllExclusiveBits(const FNetBitArray &A, const FNetBitArray &B, T &&FunctorA, V &&FunctorB)
Definition NetBitArray.h:1376
uint32 FindLastOne() const
Definition NetBitArray.h:1293
static void ForAllExclusiveBitsByPredicate(const FNetBitArray &A, const FNetBitArray &B, T &&FunctorA, V &&FunctorB, Predicate &&Pred)
Definition NetBitArray.h:1382
bool IsBitSet(uint32 Index) const
Definition NetBitArray.h:177
uint32 GetNumWords() const
Definition NetBitArray.h:1197
StorageWordType & GetWord(uint32 WordIndex) UE_LIFETIMEBOUND
Definition NetBitArray.h:160
uint32 GetSetBitIndices(uint32 StartIndex, uint32 Count, uint32 *OutIndices, uint32 OutIndicesCapacity) const
Definition NetBitArray.h:1298
void Empty()
Definition NetBitArray.h:1172
Private::FNetBitArrayRangedForConstIterator end() const
Definition NetBitArray.h:1405
uint32 GetNumBits() const
Definition NetBitArray.h:1192
uint32 FindLastZero() const
Definition NetBitArray.h:1288
GeometryCollection::Facades::FMuscleActivationData Data
Definition MuscleActivationConstraints.h:15
Definition OverriddenPropertySet.cpp:45
Definition NetworkVersion.cpp:28
Definition NetworkVersion.cpp:28
FNetBitArrayView MakeNetBitArrayView(const FNetBitArrayView::StorageWordType *Storage, uint32 BitCount)
Definition NetBitArray.h:1677
U16 Index
Definition radfft.cpp:71