namespace Misaki.HighPerformance.LowLevel.Buffer;
///
/// A structure that encapsulates function pointers for memory allocation operations.
///
public readonly unsafe struct AllocationHandle
{
///
/// Gets a pointer to the allocator instance associated with this allocation handle.
///
public void* pAllocator
{
get;
}
///
/// Gets a function pointer for allocating memory.
///
public AllocFunc Alloc
{
get;
}
///
/// Gets a function pointer for reallocating memory.
///
public ReallocFunc Realloc
{
get;
}
///
/// Gets a function pointer for freeing allocated memory.
///
public FreeFunc Free
{
get;
}
///
/// Initializes a new instance of the struct with the specified allocator and memory
/// management functions.
///
/// A pointer to the allocator instance used for memory management.
/// The function used to allocate memory.
/// The function used to reallocate memory.
/// The function used to free allocated memory.
public AllocationHandle(void* allocator, AllocFunc alloc, ReallocFunc realloc, FreeFunc free)
{
pAllocator = allocator;
Alloc = alloc;
Realloc = realloc;
Free = free;
}
}
///
/// Represents an allocator interface for managing memory allocations.
///
///
/// The allocator must be pined to a specific memory region.
/// Otherwise the reference of the , may become invalid and lead to undefined behavior.
///
public interface IAllocator
{
///
/// Gets a reference to the allocation handle associated with this allocator.
///
AllocationHandle Handle
{
get;
}
}