C/C++ API Reference
Loading...
Searching...
No Matches
pw::allocator::AllocatorAsPool Class Reference

Overview

Implementation of Pool that satisfies requests using an Allocator.

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

Public Member Functions

 AllocatorAsPool (pw::Allocator &allocator, const Layout &layout)
 
- Public Member Functions inherited from pw::allocator::Pool
constexpr const Layoutlayout () const
 
void * Allocate ()
 
template<typename T , int &... kExplicitGuard, typename... Args>
std::enable_if_t<!std::is_array_v< T >, T * > New (Args &&... args)
 
template<typename T , int &... kExplicitGuard, typename ElementType = std::remove_extent_t<T>>
std::enable_if_t< pw::is_bounded_array_v< T >, ElementType * > New ()
 
template<typename T , int &... kExplicitGuard, typename ElementType = std::remove_extent_t<T>>
std::enable_if_t< pw::is_unbounded_array_v< T >, ElementType * > New ()
 
template<typename T , int &... kExplicitGuard, typename... Args>
std::enable_if_t<!std::is_array_v< T >, UniquePtr< T > > MakeUnique (Args &&... args)
 
template<typename T >
std::enable_if_t< pw::is_bounded_array_v< T >, UniquePtr< T > > MakeUnique ()
 
template<typename T >
std::enable_if_t< pw::is_unbounded_array_v< T >, UniquePtr< T > > MakeUnique ()
 
- Public Member Functions inherited from pw::Deallocator
constexpr const Capabilitiescapabilities () const
 
constexpr bool HasCapability (Capability capability) const
 Returns whether a given capability is enabled for this object.
 
void Deallocate (void *ptr)
 
template<typename ElementType >
void DeleteArray (ElementType *ptr, size_t count)
 
StatusWithSize GetCapacity () const
 
bool IsEqual (const Deallocator &other) const
 
template<typename T , int &... kExplicitGuard, std::enable_if_t<!std::is_array_v< T >, int > = 0>
void Delete (T *ptr)
 
template<typename T , int &... kExplicitGuard, typename ElementType = std::remove_extent_t<T>, std::enable_if_t< is_bounded_array_v< T >, int > = 0>
void Delete (ElementType *ptr)
 
template<typename T , int &... kExplicitGuard, typename ElementType = std::remove_extent_t<T>, std::enable_if_t< is_unbounded_array_v< T >, int > = 0>
void Delete (ElementType *ptr, size_t count)
 

Protected Member Functions

void * DoAllocate () override
 
void DoDeallocate (void *ptr) override
 
Result< LayoutDoGetInfo (InfoType info_type, const void *ptr) const override
 
- Protected Member Functions inherited from pw::allocator::Pool
constexpr Pool (const Capabilities &capabilities, const Layout &layout)
 
virtual void * DoAllocate ()=0
 
- Protected Member Functions inherited from pw::Deallocator
constexpr Deallocator ()=default
 TODO(b/326509341): Remove when downstream consumers migrate.
 
constexpr Deallocator (const Capabilities &capabilities)
 
Result< LayoutGetInfo (InfoType info_type, const void *ptr) const
 
Result< LayoutGetRequestedLayout (const void *ptr) const
 
Result< LayoutGetUsableLayout (const void *ptr) const
 
Result< LayoutGetAllocatedLayout (const void *ptr) const
 
bool Recognizes (const void *ptr) const
 
virtual void DoDeallocate (void *ptr)=0
 
virtual Result< LayoutDoGetInfo (InfoType, const void *) const
 

Additional Inherited Members

- Public Types inherited from pw::Deallocator
using Capabilities = allocator::Capabilities
 
using Capability = allocator::Capability
 
using Layout = allocator::Layout
 
- Protected Types inherited from pw::Deallocator
enum class  InfoType {
  kRequestedLayoutOf , kUsableLayoutOf , kAllocatedLayoutOf , kCapacity ,
  kRecognizes
}
 
- Static Protected Member Functions inherited from pw::Deallocator
static Result< LayoutGetInfo (const Deallocator &deallocator, InfoType info_type, const void *ptr)
 
static Result< LayoutGetRequestedLayout (const Deallocator &deallocator, const void *ptr)
 
static Result< LayoutGetUsableLayout (const Deallocator &deallocator, const void *ptr)
 
static Result< LayoutGetAllocatedLayout (const Deallocator &deallocator, const void *ptr)
 
static bool Recognizes (const Deallocator &deallocator, const void *ptr)
 
- Static Protected Attributes inherited from pw::Deallocator
template<typename T >
static constexpr bool is_bounded_array_v = ::pw::is_bounded_array_v<T>
 
template<typename T >
static constexpr bool is_unbounded_array_v = ::pw::is_unbounded_array_v<T>
 

Constructor & Destructor Documentation

◆ AllocatorAsPool()

pw::allocator::AllocatorAsPool::AllocatorAsPool ( pw::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 ( )
overrideprotectedvirtual

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)
overrideprotectedvirtual

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.

Implements pw::Deallocator.

◆ DoGetInfo()

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

Returns deallocator-specific information about allocations.

Deallocators may support any number of InfoTypes. See that type for what each supported type returns. For unsupported types, this method returns UNIMPLEMENTED.

Reimplemented from pw::Deallocator.


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