14 m_uiItemSize = a_uiItemSize;
16 m_pMemoryHeap =
TNULL;
21 m_pPrevList = ms_pLastList;
28 m_iCapacity += a_iNumber;
33 m_RootNode.
pNext = pNewNode;
35 auto pData = pNewNode + 1;
38 for (
TINT i = a_iNumber - 1; i != 0; i-- )
46 m_LastNode.pNext = pNext;
52 if ( m_iCapacity < a_iNewCapacity )
54 auto pNode =
Allocate( a_iNewCapacity - m_iCapacity, m_uiItemSize );
56 pNode->pNext = m_LastNode.pNext;
57 m_LastNode.pNext = pNode;
63 if ( a_uiSize != m_uiItemSize )
68 auto pNode = m_LastNode.
pNext;
72 m_LastNode.pNext = pNode->pNext;
77 return Allocate( m_iGrowSize, a_uiSize );
85 if ( m_LastNode.pNext !=
TNULL )
88 m_LastNode.
pNext = pNode;
92 m_LastNode.pNext = pNode;
void * TMalloc(TSIZE a_uiSize, Toshi::TMemory::MemBlock *a_pMemBlock, const TCHAR *a_szFileName, TINT a_iLineNum)
Allocates memory from a specific memory block.
#define TSTATICCAST(POINTERTYPE, VALUE)
#define TREINTERPRETCAST(TYPE, VALUE)
#define TOSHI_NAMESPACE_START
#define TOSHI_NAMESPACE_END
Node * Allocate(TINT a_iNumber, TINT a_iSize)
void SetCapacity(TINT a_iNewCapacity)
TFreeList(TUINT a_uiItemSize, TINT a_iInitialSize, TINT a_iGrowSize, const TCHAR *a_pchName)
void SetGrowSize(TINT a_iGrowSize)
void * New(TUINT a_uiSize)