9 #ifdef DEBUG //Block debug headers
10 unsigned long long FMagicHeader;
14 unsigned long long FMagicFooter;
34 LargeBlock(
const unsigned long long ASpaceAvailable,
Block*
const ALeftBlock) noexcept;
48 unsigned long long Size(
void) const noexcept;
51 void SetSize(const
unsigned long long ANewSize) noexcept;
LargeBlock(const unsigned long long ASpaceAvailable, Block *const ALeftBlock) noexcept
Initialization constructor. Should be used with operator new in a memory location at least ASpaceAvai...
Used to identify the end of a Heap.
unsigned long long Size(void) const noexcept
Get the size of the Block. This version must be used when referring to large blocks ...
static Block & AllocateBlock(LargeBlock *&ALargeBlock, const unsigned int ANewBlockSize) noexcept
Allocate a portion of the LargeBlock's owned data to create a regular block.
unsigned long long FRemainingSize
The amount of space the block has available.
void SetSize(const unsigned long long ANewSize) noexcept
Set the Block's size. This version must be used when referring to large blocks
void Validate(void) const
Checks the validity of a Block HCFs if invalid. Has no effect outside of DEBUG mode. This version must be used when referring to large blocks
A unit of memory allocation.
LargeBlock & EatLeftBlock(void) noexcept
Merge size and header into the size of the Block to the left. Does not modify free lists...