[+] AuHeapUniqueDeleterClass
This commit is contained in:
parent
21f35e0bea
commit
c3a1ae1576
26
Include/auROXTL/MemoryModel/AuHeapUniqueDeleterClass.hpp
Executable file
26
Include/auROXTL/MemoryModel/AuHeapUniqueDeleterClass.hpp
Executable file
@ -0,0 +1,26 @@
|
|||||||
|
/***
|
||||||
|
Copyright (C) 2024 Jamie Reece Wilson (a/k/a "Reece"). All rights reserved.
|
||||||
|
|
||||||
|
File: AuHeapUniqueDeleterClass.hpp
|
||||||
|
Date: 2024-09-22
|
||||||
|
Author: Reece
|
||||||
|
***/
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
template <typename Type, typename Expects = Type>
|
||||||
|
struct AuHeapUniqueDeleterClass : AuHeapAccessor2
|
||||||
|
{
|
||||||
|
inline static auto Get()
|
||||||
|
{
|
||||||
|
return AuHeapAccessor2::Get<Type>();
|
||||||
|
}
|
||||||
|
|
||||||
|
inline void operator()(Expects *pThat) const
|
||||||
|
{
|
||||||
|
if (!pThat)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Get()((Type *)pThat);
|
||||||
|
}
|
||||||
|
};
|
@ -141,6 +141,7 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend struct AuHeapAccessor;
|
friend struct AuHeapAccessor;
|
||||||
|
friend struct AuHeapAccessor2;
|
||||||
friend struct Aurora::Memory::ProxyHeap;
|
friend struct Aurora::Memory::ProxyHeap;
|
||||||
|
|
||||||
virtual AuSPtr<AuHeap> GetSelfReference() = 0; // may return empty/default. not all heaps are sharable.
|
virtual AuSPtr<AuHeap> GetSelfReference() = 0; // may return empty/default. not all heaps are sharable.
|
||||||
@ -155,4 +156,4 @@ protected:
|
|||||||
virtual AU_ALLOC void *_FRealloc(void *pBase, AuUInt uLength, AuUInt uAlign) = 0;
|
virtual AU_ALLOC void *_FRealloc(void *pBase, AuUInt uLength, AuUInt uAlign) = 0;
|
||||||
virtual AU_ALLOC void *_FRealloc(void *pBase, AuUInt uLength) = 0;
|
virtual AU_ALLOC void *_FRealloc(void *pBase, AuUInt uLength) = 0;
|
||||||
virtual void _Free(void* pBase) = 0;
|
virtual void _Free(void* pBase) = 0;
|
||||||
};
|
};
|
@ -21,3 +21,13 @@ struct AuHeapAccessor
|
|||||||
return pHeap->GetSelfReferenceRaw();
|
return pHeap->GetSelfReferenceRaw();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct AuHeapAccessor2
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
template <typename Type>
|
||||||
|
inline static auto Get()
|
||||||
|
{
|
||||||
|
return &AuHeap::DeleteThat<Type>;
|
||||||
|
}
|
||||||
|
};
|
@ -459,6 +459,7 @@ inline constexpr bool operator!=(const Aurora::Memory::BaseAuroraRuntimeAllocato
|
|||||||
#include <auROXTL/MemoryModel/auHeapStats.hpp>
|
#include <auROXTL/MemoryModel/auHeapStats.hpp>
|
||||||
#include <auROXTL/MemoryModel/auHeap.hpp>
|
#include <auROXTL/MemoryModel/auHeap.hpp>
|
||||||
#include <auROXTL/MemoryModel/auHeapAccessor.hpp>
|
#include <auROXTL/MemoryModel/auHeapAccessor.hpp>
|
||||||
|
#include <auROXTL/MemoryModel/AuHeapUniqueDeleterClass.hpp>
|
||||||
|
|
||||||
#include <auROXTL/MemoryModel/auDummyHeap.hpp>
|
#include <auROXTL/MemoryModel/auDummyHeap.hpp>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user