3#include <Common/Memory/Allocators/DynamicAllocator.hpp>
4#include <Common/String.hpp>
6namespace Grindstone::Memory::AllocatorCore {
14 bool Initialize(
size_t sizeInMegs);
15 void CloseAllocator();
17 StringRef AllocateString(
size_t size);
18 StringRef AllocateString(Grindstone::StringRef srcString);
20 bool FreeWithoutDestructor(
void* memPtr);
28 void* AllocateRaw(
size_t size,
size_t alignment,
const char* debugName);
32 return GetAllocatorState()->dynamicAllocator.MakeShared(ptr);
37 return GetAllocatorState()->dynamicAllocator.MakeUnique(ptr);
40 template<
typename T,
typename... Args>
42 return GetAllocatorState()->dynamicAllocator.AllocateUnique<T>(std::forward<Args>(params)...);
45 template<
typename T,
typename... Args>
47 return GetAllocatorState()->dynamicAllocator.AllocateShared<T>(std::forward<Args>(params)...);
50 template<
typename T,
typename... Args>
51 T* Allocate(Args&&... params) {
52 T* ptr =
static_cast<T*
>(GetAllocatorState()->dynamicAllocator.AllocateRaw(
sizeof(T),
alignof(T),
typeid(T).name()));
55 new (ptr) T(std::forward<Args>(params)...);
62 bool Free(T* memPtr) {
63 if (memPtr ==
nullptr) {
67 reinterpret_cast<T*
>(memPtr)->~T();
68 GetAllocatorState()->dynamicAllocator.Free(memPtr);
A dynamic allocator represented by a linked list.
Definition DynamicAllocator.hpp:19
Definition SharedPtr.hpp:5
Definition UniquePtr.hpp:7
Definition MemoryAllocator.hpp:7