3#define TDECLARE_FREELIST_ALLOCATOR( CLASS_NAME ) \
5 TFORCEINLINE void* operator new( size_t s ) { return ms_oFreeList.New( sizeof( CLASS_NAME ) ); } \
6 TFORCEINLINE void* operator new( size_t s, void* where ) { return where; } \
8 TFORCEINLINE void operator delete( void* ptr ) { ms_oFreeList.Delete( ptr ); } \
9 TFORCEINLINE void operator delete( void* ptr, void* where ) { delete ptr; } \
11 static void SetupFreeList( TINT a_iCapacity, TINT a_iGrowSize ) \
13 ms_oFreeList.SetCapacity( a_iCapacity ); \
14 ms_oFreeList.SetGrowSize( a_iGrowSize ); \
17 static Toshi::TFreeList ms_oFreeList;
19#define TDEFINE_FREELIST_ALLOCATOR( CLASS_NAME ) \
20 Toshi::TFreeList CLASS_NAME::ms_oFreeList = Toshi::TFreeList( sizeof( CLASS_NAME ), 0, 8, #CLASS_NAME );
22#define TDEFINE_FREELIST_ALLOCATOR1( CLASS_NAME, GROW_SIZE ) \
23 Toshi::TFreeList CLASS_NAME::ms_oFreeList = Toshi::TFreeList( sizeof( CLASS_NAME ), 0, GROW_SIZE, #CLASS_NAME );
44 void SetGrowSize(
TINT a_iGrowSize ) { a_iGrowSize < 0 ? m_iGrowSize = 8 : m_iGrowSize = a_iGrowSize; }
47 void Delete(
void* a_Ptr );
#define TOSHI_NAMESPACE_START
#define TOSHI_NAMESPACE_END
Represents a contiguous block of memory that can be allocated from.
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)