gwnavruntime/containers/bitfield.h Source File
Go to the documentation of this file.
7 #ifndef Navigation_BitField_H
8 #define Navigation_BitField_H
23 BitFieldBase() : m_words(
KY_NULL), m_wordsCapacity(0), m_bitsCount(0) {}
24 ~BitFieldBase() { KY_FREE(m_words); }
30 bool IsBitSet(
KyUInt32 bitIndex)
const;
37 void SetBitValue(
KyUInt32 bitIndex,
bool bitValue);
45 void Resize_(
KyUInt32 newBitsCount,
int memStat, MemoryHeap* heap =
KY_NULL);
46 void Reserve_(
KyUInt32 newBitsCount,
int memStat, MemoryHeap* heap =
KY_NULL);
47 void InitFromBlob_(
const BitFieldBlob& bitFieldBlob,
int memStat, MemoryHeap* heap =
KY_NULL);
53 friend class BitFieldBlob;
54 friend class BitFieldBlobBuilder;
63 class BitFieldMemStat :
public BitFieldBase
67 KY_INLINE explicit BitFieldMemStat() : BitFieldBase() {}
68 KY_INLINE
explicit BitFieldMemStat(
KyUInt32 newBitsCount) { Resize_(newBitsCount, SID); }
69 KY_INLINE
void Resize(
KyUInt32 newBitsCount) { Resize_(newBitsCount, SID); }
70 KY_INLINE
void Reserve(
KyUInt32 newBitsCount) { Reserve_(newBitsCount, SID); }
71 KY_INLINE
void InitFromBlob(
const BitFieldBlob& bitFieldBlob) { InitFromBlob_(bitFieldBlob, SID); }
74 typedef BitFieldMemStat<Stat_Default_Mem> BitField;
78 KY_INLINE
void BitFieldBase::SetBitValue(
KyUInt32 bitIndex,
KyUInt32 bitValue) { bitValue == 0 ? UnsetBit(bitIndex) : SetBit(bitIndex); }
79 KY_INLINE
void BitFieldBase::SetBitValue(
KyUInt32 bitIndex,
bool bitValue) { bitValue ==
false ? UnsetBit(bitIndex) : SetBit(bitIndex); }
80 KY_INLINE
KyUInt32 BitFieldBase::GetBitValue(
KyUInt32 bitIndex)
const {
return (Word(bitIndex) >> BitFieldUtils::GetBitIndexInWord(bitIndex)) & 0x00000001; }
82 KY_INLINE
void BitFieldBase::SetBit(
KyUInt32 bitIndex) { BitFieldUtils::SetBit(m_words, bitIndex); }
83 KY_INLINE
void BitFieldBase::UnsetBit(
KyUInt32 bitIndex) { BitFieldUtils::UnsetBit(m_words, bitIndex); }
84 KY_INLINE
bool BitFieldBase::IsBitSet(
KyUInt32 bitIndex)
const {
return BitFieldUtils::IsBitSet(m_words , bitIndex); }
85 KY_INLINE
KyUInt32 BitFieldBase::GetCount()
const {
return m_bitsCount; }
87 KY_INLINE
KyUInt32 BitFieldBase::Word(
KyUInt32 bitIndex)
const {
return m_words[BitFieldUtils::GetWordIndex(bitIndex)]; }
88 KY_INLINE
KyUInt32& BitFieldBase::Word(
KyUInt32 bitIndex) {
return m_words[BitFieldUtils::GetWordIndex(bitIndex)]; }
92 #endif // Navigation_BitField_H
#define KY_NULL
Null value.
Definition: types.h:247
Definition: gamekitcrowddispersion.h:20
#define KY_DEFINE_NEW_DELETE_OPERATORS(MemStat)
This macro defines new and delete operators.
Definition: memory.h:137
unsigned int KyUInt32
Type used internally to represent an unsigned 32-bit integer.
Definition: types.h:36