Drop custom "new" operator overloads
This commit is contained in:
parent
5755cc6517
commit
7876efc4f5
@ -223,72 +223,6 @@ export namespace coral {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Allocates and initializes a type of `requested_size` in `buffer`, returning its base pointer. As a result of
|
|
||||||
* accepting a pre-allocated buffer, invocation does not allocate any dynamic memory.
|
|
||||||
*
|
|
||||||
* *Note*: passing an `buffer` smaller than `requested_size` will result in safety-checked behavior.
|
|
||||||
*/
|
|
||||||
export void * operator new(coral::usize requested_size, coral::slice<coral::u8> const & buffer) {
|
|
||||||
if (buffer.length < requested_size) coral::unreachable();
|
|
||||||
|
|
||||||
return buffer.pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Allocates and initializes a series of types at `requested_size` in `buffer`, returning the base pointer. As a result
|
|
||||||
* of accepting a pre-allocated buffer, invocation does not allocate any dynamic memory.
|
|
||||||
*
|
|
||||||
* *Note*: passing an `buffer` smaller than `requested_size` will result in safety-checked behavior.
|
|
||||||
*/
|
|
||||||
export void * operator new[](coral::usize requested_size, coral::slice<coral::u8> const & buffer) {
|
|
||||||
if (buffer.length < requested_size) coral::unreachable();
|
|
||||||
|
|
||||||
return buffer.pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Attempts to allocate and initialize a type of `requested_size` using `allocator`.
|
|
||||||
*
|
|
||||||
* *Note*: If the returned address is a non-`nullptr`, it should be deallocated prior to program exit. This may be
|
|
||||||
* achieved through either [coral::allocator::deallocate] or implementation-specific allocator functionality.
|
|
||||||
*/
|
|
||||||
export [[nodiscard]] void * operator new(coral::usize requested_size, coral::allocator & allocator) {
|
|
||||||
return allocator.reallocate(nullptr, requested_size);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Attempts to allocate and initialize a series of types of `requested_size` using `allocator`.
|
|
||||||
*
|
|
||||||
* *Note*: If the returned address is a non-`nullptr`, it should be deallocated prior to program exit. This may be
|
|
||||||
* achieved through either [coral::allocator::deallocate] or implementation-specific allocator functionality.
|
|
||||||
*/
|
|
||||||
export [[nodiscard]] void * operator new[](coral::usize requested_size, coral::allocator & allocator) {
|
|
||||||
return allocator.reallocate(nullptr, requested_size);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If `pointer` is a non-`nullptr` value, the referenced memory will be deallocated using `allocator`. Otherwise, the
|
|
||||||
* function has no side-effects.
|
|
||||||
*
|
|
||||||
* *Note*: passing a `pointer` value that was not allocated by `allocator` will result in erroneous behavior defined by
|
|
||||||
* the [coral::allocator] implementation.
|
|
||||||
*/
|
|
||||||
export void operator delete(void * pointer, coral::allocator & allocator) {
|
|
||||||
return allocator.deallocate(pointer);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If `pointer` is a non-`nullptr` value, the referenced memory block will be deallocated using `allocator`. Otherwise,
|
|
||||||
* the function has no side-effects.
|
|
||||||
*
|
|
||||||
* *Note*: passing a `pointer` value that was not allocated by `allocator` will result in erroneous behavior defined by
|
|
||||||
* the [coral::allocator] implementation.
|
|
||||||
*/
|
|
||||||
export void operator delete[](void * pointer, coral::allocator & allocator) {
|
|
||||||
return allocator.deallocate(pointer);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Wrapper types.
|
// Wrapper types.
|
||||||
export namespace coral {
|
export namespace coral {
|
||||||
template<typename callable, typename... arguments> concept function_pointer =
|
template<typename callable, typename... arguments> concept function_pointer =
|
||||||
|
Loading…
x
Reference in New Issue
Block a user