Pigweed
 
Loading...
Searching...
No Matches
pw::allocator::AllocatorAsPool Class Reference

Implementation of Pool that satisfies requests using an Allocator. More...

#include <allocator_as_pool.h>

Inheritance diagram for pw::allocator::AllocatorAsPool:
pw::allocator::Pool pw::Deallocator

Public Member Functions

 AllocatorAsPool (Allocator &allocator, const Layout &layout)
 
- Public Member Functions inherited from pw::allocator::Pool
constexpr Pool (const Capabilities &capabilities, const Layout &layout)
 
const Layoutlayout () const
 
void * Allocate ()
 
- Public Member Functions inherited from pw::Deallocator
constexpr const Capabilitiescapabilities () const
 
bool HasCapability (Capability capability) const
 Returns whether a given capabilityis enabled for this object.
 
void Deallocate (void *ptr)
 
void Deallocate (void *ptr, Layout layout)
 
template<typename T >
void Delete (T *ptr)
 
StatusWithSize GetCapacity () const
 
bool IsEqual (const Deallocator &other) const
 
template<typename T , int &... kExplicitGuard, std::enable_if_t< is_bounded_array_v< T >, int > = 0, typename... Args>
void WrapUnique (Args &&...)=delete
 

Private Member Functions

void * DoAllocate () override
 
void DoDeallocate (void *ptr) override
 
Result< LayoutDoGetInfo (InfoType info_type, const void *ptr) const override
 

Additional Inherited Members

- Public Types inherited from pw::Deallocator
using Capabilities = allocator::Capabilities
 
using Capability = allocator::Capability
 
using Layout = allocator::Layout
 
- Protected Member Functions inherited from pw::Deallocator
constexpr Deallocator ()=default
 TODO(b/326509341): Remove when downstream consumers migrate.
 
constexpr Deallocator (const Capabilities &capabilities)
 
template<typename T , std::enable_if_t<!std::is_array_v< T >, int > = 0>
UniquePtr< T > WrapUnique (T *ptr)
 
template<typename T , int &... kExplicitGuard, typename ElementType = std::remove_extent_t<T>, std::enable_if_t< is_unbounded_array_v< T >, int > = 0>
UniquePtr< T > WrapUnique (ElementType *ptr, size_t size)
 
template<typename T >
UniquePtr< T[]> WrapUniqueArray (T *ptr, size_t size)
 
- Static Protected Attributes inherited from pw::Deallocator
template<typename T >
static constexpr bool is_bounded_array_v
 
template<typename T >
static constexpr bool is_unbounded_array_v
 

Detailed Description

Implementation of Pool that satisfies requests using an Allocator.

Constructor & Destructor Documentation

◆ AllocatorAsPool()

pw::allocator::AllocatorAsPool::AllocatorAsPool ( Allocator allocator,
const Layout layout 
)

Construct a Pool from an Allocator.

Parameters
allocatorThe allocator used to create fixed-size allocations.
layoutThe size and alignment of the memory to be returned from this pool.

Member Function Documentation

◆ DoAllocate()

void * pw::allocator::AllocatorAsPool::DoAllocate ( )
overrideprivatevirtual

Returns a chunk of memory with this object's fixed layout.

Like pw::allocator::Allocate, returns null if memory is exhausted.

Return values
Theallocated memory.

Implements pw::allocator::Pool.

◆ DoDeallocate()

void pw::allocator::AllocatorAsPool::DoDeallocate ( void *  ptr)
overrideprivate

Releases a previously-allocated block of memory.

The given pointer must have been previously provided by this memory resource; otherwise the behavior is undefined.

Parameters
[in]ptrPointer to previously-allocated memory.

◆ DoGetInfo()

Result< Layout > pw::allocator::AllocatorAsPool::DoGetInfo ( InfoType  info_type,
const void *  ptr 
) const
overrideprivate


The documentation for this class was generated from the following file: