#include <arrayallocator.h>
Array allocator which only allocates and frees entries of SIZE bytes. Depending on the type of array the allocation might relocate already existing items.
| SIZE | The size of an entry in bytes. |
| ARRAYSELECTOR | Selector for array type to be used as allocator. |
| FLUSH | Use true if Flush() shall be called on the array instead of Reset() when all entries have been freed. |
Classes | |
| struct | FreeEntry |
Public Types | |
| using | ValueType = ArrayAllocatorValueType< SIZE > |
| using | ArrayType = typename ARRAYSELECTOR::template Type< ValueType > |
| using | IsArrayAllocator = std::true_type |
Public Member Functions | |
| ArrayAllocator () | |
| ArrayAllocator (ArrayAllocator &&src) | |
| Int | ComputeArraySize (Int currentSize, Int increment, Int minChunkSize) |
| void * | Alloc (Int64 s, MAXON_SOURCE_LOCATION_DECLARATION) |
| void * | Realloc (void *, Int64, MAXON_SOURCE_LOCATION_DECLARATION) |
| template<typename T > | |
| void | Free (T *&p) |
| Bool | IsCompatibleWithDefaultAllocator (void *p) const |
| ArrayType & | GetArray () |
| const ArrayType & | GetArray () const |
| template<typename T > | |
| Bool | DeleteAll () |
Private Attributes | |
| Int | _usedEntryCnt |
| FreeEntry * | _freeEntry |
| ArrayType | _buffer |
| using ValueType = ArrayAllocatorValueType<SIZE> |
| using IsArrayAllocator = std::true_type |
| ArrayAllocator | ( | ) |
Default Constructor.
| ArrayAllocator | ( | ArrayAllocator< SIZE, ARRAYSELECTOR, FLUSH > && | src | ) |
Move constructor.
Computes the new size for a growing array THREADSAFE.
| [in] | currentSize | Current number of elements. |
| [in] | increment | Number of elements to be added (>= 1) |
| [in] | minChunkSize | The minimum number of elements upon array creation. |
| void* Alloc | ( | Int64 | s, |
| MAXON_SOURCE_LOCATION_DECLARATION | |||
| ) |
Allocates a memory block. The memory is not cleared, it may contain a certain byte pattern in debug mode.
| [in] | s | Block size in bytes (values < 0 will return nullptr) |
| [in] | allocLocation | Pass MAXON_SOURCE_LOCATION(_NAME) to add the current source line and file. |
| void* Realloc | ( | void * | , |
| Int64 | , | ||
| MAXON_SOURCE_LOCATION_DECLARATION | |||
| ) |
Not supported for this allocator.
| void Free | ( | T *& | p | ) |
Frees a memory block.
| [in,out] | p | Memory block address (can be nullptr, will be nullptr after return) |
| Bool IsCompatibleWithDefaultAllocator | ( | void * | p | ) | const |
Returns if a memory block allocated via this allocator can be reallocated or freed by the DefaultAllocator.
| [in] | p | Memory block address. |
| ArrayType& GetArray | ( | ) |
| const ArrayType& GetArray | ( | ) | const |
| Bool DeleteAll | ( | ) |
|
private |
|
private |
|
private |