template<typename BlockType = BucketBlock<>, size_t kMinInnerSize = 32, size_t kNumBuckets = 5>
class pw::allocator::BucketAllocator< BlockType, kMinInnerSize, kNumBuckets >
A BasicBucketAllocator that provides storage for its buckets.
Except for the constructors, methods are implemented on the base class in order to reduce code duplication.
|
|
constexpr | BucketAllocator () |
| | Constexpr constructor. Callers must explicitly call Init.
|
| |
| | BucketAllocator (ByteSpan region) |
| |
|
constexpr void | InitBuckets (span< UnorderedBucket< BlockType > > buckets, size_t max_inner_size) |
| | Configures bucket sizes.
|
| |
|
Range | blocks () const |
| | Returns a Range of blocks tracking the memory of this allocator.
|
| |
| void | Init (ByteSpan region) |
| |
| size_t | GetMaxAllocatable () |
| |
|
| GenericBlockAllocator (const GenericBlockAllocator &)=delete |
| |
|
GenericBlockAllocator & | operator= (const GenericBlockAllocator &)=delete |
| |
|
| GenericBlockAllocator (GenericBlockAllocator &&)=delete |
| |
|
GenericBlockAllocator & | operator= (GenericBlockAllocator &&)=delete |
| |
| void * | Allocate (Layout layout) |
| |
| template<typename T , int &... kExplicitGuard, std::enable_if_t<!std::is_array_v< T >, int > = 0, typename... Args> |
| T * | New (Args &&... args) |
| |
| template<typename T , int &... kExplicitGuard, typename ElementType = std::remove_extent_t<T>, std::enable_if_t< is_bounded_array_v< T >, int > = 0> |
| ElementType * | New () |
| |
| template<typename T , int &... kExplicitGuard, typename ElementType = std::remove_extent_t<T>, std::enable_if_t< is_unbounded_array_v< T >, int > = 0> |
| ElementType * | New (size_t count) |
| |
| template<typename T , int &... kExplicitGuard, typename ElementType = std::remove_extent_t<T>, std::enable_if_t< is_unbounded_array_v< T >, int > = 0> |
| ElementType * | New (size_t count, size_t alignment) |
| | Constructs an alignment-byte aligned array of count objects.
|
| |
| template<typename T , int &... kExplicitGuard, std::enable_if_t<!std::is_array_v< T >, int > = 0, typename... Args> |
| UniquePtr< T > | MakeUnique (Args &&... args) |
| |
| template<typename T , std::enable_if_t< is_unbounded_array_v< T >, int > = 0> |
| UniquePtr< T > | MakeUnique (size_t size) |
| |
| template<typename T , std::enable_if_t< is_unbounded_array_v< T >, int > = 0> |
| UniquePtr< T > | MakeUnique (size_t size, size_t alignment) |
| |
| template<typename T , std::enable_if_t< is_bounded_array_v< T >, int > = 0> |
| UniquePtr< T > | MakeUnique () |
| |
| template<typename T , int &... kExplicitGuard, std::enable_if_t<!std::is_array_v< T >, int > = 0, typename... Args> |
| SharedPtr< T > | MakeShared (Args &&... args) |
| |
| template<typename T , std::enable_if_t< is_unbounded_array_v< T >, int > = 0> |
| SharedPtr< T > | MakeShared (size_t size) |
| |
| template<typename T , std::enable_if_t< is_unbounded_array_v< T >, int > = 0> |
| SharedPtr< T > | MakeShared (size_t size, size_t alignment) |
| |
| template<typename T , std::enable_if_t< is_bounded_array_v< T >, int > = 0> |
| SharedPtr< T > | MakeShared () |
| |
| bool | Resize (void *ptr, size_t new_size) |
| |
| void * | Reallocate (void *ptr, Layout new_layout) |
| |
| size_t | GetAllocated () const |
| |
|
std::optional< Fragmentation > | MeasureFragmentation () const |
| | Returns fragmentation information for the allocator's memory region.
|
| |
|
constexpr const Capabilities & | capabilities () 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) |
| |