2#ifdef LL_MEMORY_OPERATORS
8#include "mc/deps/core/memory/IMemoryAllocator.h"
10#include "ll/api/memory/Memory.h"
12extern "C" LL_SHARED_EXPORT
int const ll_memory_operator_overrided{};
14void operator delete(
void* p)
noexcept { ::ll::memory::getDefaultAllocator().release(p); }
16void operator delete(
void* p, std::nothrow_t
const&)
noexcept {
operator delete(p); }
18void operator delete[](
void* p)
noexcept {
operator delete(p); }
20void operator delete[](
void* p, std::nothrow_t
const&)
noexcept {
operator delete[](p); }
22void operator delete(
void* p, std::size_t)
noexcept {
operator delete(p); }
24void operator delete[](
void* p, std::size_t)
noexcept {
operator delete[](p); }
26void operator delete(
void* p, std::align_val_t)
noexcept { ::ll::memory::getDefaultAllocator().alignedRelease(p); }
28void operator delete(
void* p, std::align_val_t alignment, std::nothrow_t
const&)
noexcept {
29 operator delete(p, alignment);
31void operator delete[](
void* p, std::align_val_t alignment)
noexcept {
operator delete(p, alignment); }
33void operator delete[](
void* p, std::align_val_t alignment, std::nothrow_t
const&)
noexcept {
34 operator delete[](p, alignment);
36void operator delete(
void* p, std::size_t, std::align_val_t alignment)
noexcept {
operator delete(p, alignment); }
38void operator delete[](
void* p, std::size_t, std::align_val_t alignment)
noexcept {
operator delete[](p, alignment); }
40[[nodiscard]] LL_ALLOCATOR
void*
operator new(std::size_t size) {
41 if (
void*
const block = ::ll::memory::getDefaultAllocator().allocate(size)) {
44 ::ll::memory::throwMemoryException(size);
46[[nodiscard]] LL_NOTHROW_ALLOCATOR
void*
operator new(std::size_t size, std::nothrow_t
const&)
noexcept {
47 return ::ll::memory::getDefaultAllocator().allocate(size);
49[[nodiscard]] LL_ALLOCATOR
void*
operator new[](std::size_t size) {
return operator new(size); }
51[[nodiscard]] LL_NOTHROW_ALLOCATOR
void*
operator new[](std::size_t size, std::nothrow_t
const& tag)
noexcept {
52 return operator new(size, tag);
54[[nodiscard]] LL_ALLOCATOR
void*
operator new(std::size_t size, std::align_val_t alignment) {
55 if (
void*
const block = ::ll::memory::getDefaultAllocator().alignedAllocate(size,
static_cast<size_t>(alignment))) {
58 ::ll::memory::throwMemoryException(size);
60[[nodiscard]] LL_NOTHROW_ALLOCATOR
void*
61operator new(std::size_t size, std::align_val_t alignment, std::nothrow_t
const&)
noexcept {
62 return ::ll::memory::getDefaultAllocator().alignedAllocate(size,
static_cast<size_t>(alignment));
64[[nodiscard]] LL_ALLOCATOR
void*
operator new[](std::size_t size, std::align_val_t alignment) {
65 return operator new(size, alignment);
67[[nodiscard]] LL_NOTHROW_ALLOCATOR
void*
68operator new[](std::size_t size, std::align_val_t alignment, std::nothrow_t
const& tag)
noexcept {
69 return operator new(size, alignment, tag);