CustomAllocatorInterface Class Reference

#include <customallocator.h>

Detailed Description

Custom allocator/memory pool interface.

Public Member Functions

 MAXON_ADD_TO_REFERENCE_CLASS (Int ComputeArraySize(Int currentSize, Int increment, Int minChunkSize) { return DefaultAllocator::ComputeArraySize(currentSize, increment, minChunkSize);})
 
MAXON_METHOD void * Alloc (Int s, MAXON_SOURCE_LOCATION_DECLARATION)
 
MAXON_METHOD void * AllocClear (Int s, MAXON_SOURCE_LOCATION_DECLARATION)
 
MAXON_METHOD void * Realloc (void *data, Int size, MAXON_SOURCE_LOCATION_DECLARATION)
 
 MAXON_ADD_TO_REFERENCE_CLASS (template< typename T > void Free(T *&p) { if(this->GetPointer()) this->GetPointer() ->PrivateFree((void *) p);p=nullptr;})
 
 MAXON_ADD_TO_REFERENCE_CLASS (Bool IsCompatibleWithDefaultAllocator(void *) const { return false;})
 
MAXON_METHOD void * PrivateAlloc (Int size, Bool clear, MAXON_SOURCE_LOCATION_DECLARATION)
 
MAXON_METHOD void PrivateFree (void *data)
 
MAXON_METHOD Int PrivateGetDataSize (void *data)
 

Static Public Member Functions

static MAXON_METHOD CustomAllocatorInterfaceAlloc (MAXON_SOURCE_LOCATION_DECLARATION)
 

Private Member Functions

 MAXON_INTERFACE_NONVIRTUAL (CustomAllocatorInterface, MAXON_REFERENCE_NORMAL, "net.maxon.interface.customallocator")
 

Member Function Documentation

◆ MAXON_INTERFACE_NONVIRTUAL()

MAXON_INTERFACE_NONVIRTUAL ( CustomAllocatorInterface  ,
MAXON_REFERENCE_NORMAL  ,
"net.maxon.interface.customallocator"   
)
private

◆ Alloc() [1/2]

Parameters
[in]allocLocationSource location.

◆ MAXON_ADD_TO_REFERENCE_CLASS() [1/3]

MAXON_ADD_TO_REFERENCE_CLASS ( Int ComputeArraySize(Int currentSize, Int increment, Int minChunkSize) { return DefaultAllocator::ComputeArraySize(currentSize, increment, minChunkSize);}  )

Computes the new capacity for a growing array. THREADSAFE.

Parameters
[in]currentSizeCurrent number of elements.
[in]incrementNumber of elements to be added (>= 1)
[in]minChunkSizeThe minimum number of elements upon array creation.
Returns
New capacity (maximum number of elements).

◆ Alloc() [2/2]

Allocates a memory block. THREADSAFE. The memory is not cleared, it may contain a certain byte pattern in debug mode.

Parameters
[in]sBlock size in bytes (values < 0 will return nullptr)
[in]allocLocationPass MAXON_SOURCE_LOCATION(_NAME) to add the current source line and file.
Returns
Memory block address or nullptr.

◆ AllocClear()

MAXON_METHOD void* AllocClear ( Int  s,
MAXON_SOURCE_LOCATION_DECLARATION   
)

Allocates a memory block and clears it. THREADSAFE.

Parameters
[in]sBlock size in bytes (values < 0 will return nullptr)
[in]allocLocationPass MAXON_SOURCE_LOCATION(_NAME) to add the current source line and file.
Returns
Memory block address or nullptr.

◆ Realloc()

MAXON_METHOD void* Realloc ( void *  data,
Int  size,
MAXON_SOURCE_LOCATION_DECLARATION   
)

Resizes an allocated memory block. If allocation of a new block fails the old one won't be freed.

Parameters
[in]dataData location, can be nullptr.
[in]sizeMinimum new data size (values < 0 will return nullptr).
[in]allocLocationStructure with caller data like source file and source line.
Returns
Data pointer or nullptr.

◆ MAXON_ADD_TO_REFERENCE_CLASS() [2/3]

MAXON_ADD_TO_REFERENCE_CLASS ( template< typename T > void Free(T *&p) { if(this->GetPointer()) this->GetPointer() ->PrivateFree((void *) p);p=nullptr;}  )

◆ MAXON_ADD_TO_REFERENCE_CLASS() [3/3]

MAXON_ADD_TO_REFERENCE_CLASS ( Bool IsCompatibleWithDefaultAllocator(void *) const { return false;}  )

Returns if a memory block allocated via this allocator can be reallocated or freed by the DefaultAllocator.

Returns
True if the memory block can be reallocated or freed by the DefaultAllocator.

◆ PrivateAlloc()

MAXON_METHOD void* PrivateAlloc ( Int  size,
Bool  clear,
MAXON_SOURCE_LOCATION_DECLARATION   
)

Allocates a block of memory.

Parameters
[in]sizeMinimum data size (values < 0 will return nullptr).
[in]clearIf the data should be cleared this must be true.
[in]allocLocationStructure with caller data like source file and source line.
Returns
Data pointer or nullptr.

◆ PrivateFree()

MAXON_METHOD void PrivateFree ( void *  data)

Frees a memory block (might have been allocated by a different local Allocator of the same type).

Parameters
[in]dataPointer as returned by Alloc, guaranteed to be valid and not nullptr.

◆ PrivateGetDataSize()

MAXON_METHOD Int PrivateGetDataSize ( void *  data)

Returns the maximum size of an allocated block (might be bigger than what was acutally allocated).

Parameters
[in]dataPointer as returned by Alloc, guaranteed to be valid and != nullptr.
Returns
Block size in bytes (>=allocated size) or 0.