gwnavgeneration/common/boxoflists.h Source File
Go to the documentation of this file.
19 template <
class T, KyUInt32 NbEl = 8>
24 typedef GrowingListPool<T, NbEl> Pool;
25 typedef typename Pool::List Column;
28 explicit BoxOfLists(MemoryHeap* heap,
KyUInt32 byteCountInChunk = 0) :
29 m_countX(0), m_countY(0), m_columns(
nullptr), m_pool(heap, byteCountInChunk), m_heap(heap) {}
33 KyUInt32 CountX() {
return m_countX; }
34 KyUInt32 CountY() {
return m_countY; }
35 KyUInt32 ColumnsCount() {
return m_countX * m_countY; }
37 T* GetNew(
KyInt32 x,
KyInt32 y) {
return GetNew(y * m_countX + x); }
38 T* GetNew(
KyInt32 rowMajorIdx) {
return GetOrCreateColumn(rowMajorIdx)->GetNew(); }
40 Column* GetOrCreateColumn(
KyInt32 x,
KyInt32 y) {
return GetOrCreateColumn(y * m_countX + x); }
41 Column* GetOrCreateColumn(
KyInt32 rowMajorIdx);
43 const Column* GetColumn(
KyInt32 x,
KyInt32 y)
const {
return m_columns[y * m_countX + x]; }
44 const Column* GetColumn(
KyInt32 rowMajorIdx)
const {
return m_columns[rowMajorIdx]; }
50 KyUInt32 ByteCountAllocated()
const {
return m_pool.m_byteCountAllocated; }
52 KyUInt32 ElementCount()
const {
return m_pool.ElementCount(); }
66 template <
class T, KyUInt32 NbEl>
72 m_columns = KY_HEAP_MALLOC(m_heap, Column*, countX * countY, Stat_Default_Mem);
73 memset(m_columns, 0, countX * countY *
sizeof(Column*));
77 template <
class T, KyUInt32 NbEl>
78 inline typename BoxOfLists<T, NbEl>::Column* BoxOfLists<T, NbEl>::GetOrCreateColumn(
KyInt32 rowMajorIdx)
80 Column*& column = m_columns[rowMajorIdx];
81 if (column ==
nullptr)
82 column = m_pool.GetNewList();
87 template <
class T, KyUInt32 NbEl>
88 inline void BoxOfLists<T, NbEl>::Clear()
90 if (m_columns !=
nullptr)
101 template <
class T, KyUInt32 NbEl>
102 inline void BoxOfLists<T, NbEl>::Release()
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
std::int32_t KyInt32
int32_t
Definition: types.h:24