gwnavruntime/containers/bitfield.h Source File
Go to the documentation of this file.
22 BitFieldBase() : m_words(
nullptr), m_wordsCapacity(0), m_bitsCount(0) {}
23 ~BitFieldBase() { KY_FREE(m_words); }
29 bool IsBitSet(
KyUInt32 bitIndex)
const;
36 void SetBitValue(
KyUInt32 bitIndex,
bool bitValue);
44 void Resize_(
KyUInt32 newBitsCount,
int memStat, MemoryHeap* heap =
nullptr);
45 void Reserve_(
KyUInt32 newBitsCount,
int memStat, MemoryHeap* heap =
nullptr);
46 void InitFromBlob_(
const BitFieldBlob& bitFieldBlob,
int memStat, MemoryHeap* heap =
nullptr);
52 friend class BitFieldBlob;
53 friend class BitFieldBlobBuilder;
62 class BitFieldMemStat :
public BitFieldBase
66 KY_INLINE explicit BitFieldMemStat() : BitFieldBase() {}
67 KY_INLINE
explicit BitFieldMemStat(
KyUInt32 newBitsCount) { Resize_(newBitsCount, SID); }
68 KY_INLINE
void Resize(
KyUInt32 newBitsCount) { Resize_(newBitsCount, SID); }
69 KY_INLINE
void Reserve(
KyUInt32 newBitsCount) { Reserve_(newBitsCount, SID); }
70 KY_INLINE
void InitFromBlob(
const BitFieldBlob& bitFieldBlob) { InitFromBlob_(bitFieldBlob, SID); }
73 typedef BitFieldMemStat<Stat_Default_Mem> BitField;
77 KY_INLINE
void BitFieldBase::SetBitValue(
KyUInt32 bitIndex,
KyUInt32 bitValue) { bitValue == 0 ? UnsetBit(bitIndex) : SetBit(bitIndex); }
78 KY_INLINE
void BitFieldBase::SetBitValue(
KyUInt32 bitIndex,
bool bitValue) { bitValue ==
false ? UnsetBit(bitIndex) : SetBit(bitIndex); }
79 KY_INLINE
KyUInt32 BitFieldBase::GetBitValue(
KyUInt32 bitIndex)
const {
return (Word(bitIndex) >> BitFieldUtils::GetBitIndexInWord(bitIndex)) & 0x00000001; }
81 KY_INLINE
void BitFieldBase::SetBit(
KyUInt32 bitIndex) { BitFieldUtils::SetBit(m_words, bitIndex); }
82 KY_INLINE
void BitFieldBase::UnsetBit(
KyUInt32 bitIndex) { BitFieldUtils::UnsetBit(m_words, bitIndex); }
83 KY_INLINE
bool BitFieldBase::IsBitSet(
KyUInt32 bitIndex)
const {
return BitFieldUtils::IsBitSet(m_words , bitIndex); }
84 KY_INLINE
KyUInt32 BitFieldBase::GetCount()
const {
return m_bitsCount; }
86 KY_INLINE
KyUInt32 BitFieldBase::Word(
KyUInt32 bitIndex)
const {
return m_words[BitFieldUtils::GetWordIndex(bitIndex)]; }
87 KY_INLINE
KyUInt32& BitFieldBase::Word(
KyUInt32 bitIndex) {
return m_words[BitFieldUtils::GetWordIndex(bitIndex)]; }
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:132
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17