15 triU32 _largest_block;
16 triU32 _largest_update;
24#define TRI_HEAP( name, sz, align ) \
25 triU8 name##_heap[sz]; \
26 triU32 name##_blocks[sz/align] = { (sz/align)|(0x3<<30) }; \
27 triHeap name = { ._base = name##_heap, ._size = sz, ._block_size = align, ._free = sz / align, \
28 ._largest_block = sz / align, ._largest_update = 0, ._n_blocks = sz / align, ._blocks = name##_blocks };
31triHeap* triHeapCreate(
void* base, triU32 size, triU32 block_size );
32void triHeapDestroy( triHeap* mem );
35void __triHeapwalk( triHeap* mem );
39void* triHeapAlloc( triHeap* mem, triU32 size );
40void* triHeapRealloc( triHeap* mem,
void* ptr, triU32 size );
41void* triHeapCalloc( triHeap* mem, triU32 size );
42void triHeapFree( triHeap* mem,
void* ptr );
43void triHeapFreeAll( triHeap* mem );
45triU32 triHeapMemavail( triHeap* mem );
46triU32 triHeapLargestblock( triHeap* mem );