template<typename ErrorHandler>
class pw::allocator::internal::BaseFramingAllocator< ErrorHandler >
Provides generic framing logic for type-erased prefixes and suffixes.
- Template Parameters
-
| ErrorHandler | Invoked when a frame error is encountered. |
|
|
constexpr | BaseFramingAllocator (Allocator &allocator) |
| |
| ByteSpan | AllocateFrame (Layout prefix, Layout data, Layout suffix) |
| |
| bool | ResizeFrame (void *data, size_t new_size, Layout suffix, void *tmp_suffix) |
| |
| Result< Layout > | GetFrameInfo (InfoType info_type, const void *data, Layout suffix) const |
| |
| Result< size_t > | GetFrameSize (const void *frame) const |
| |
| constexpr | ForwardingAllocator (const Capabilities &capabilities) noexcept |
| |
| constexpr | ForwardingAllocator (pw::Allocator &allocator) noexcept |
| |
| constexpr void | Init (pw::Allocator &allocator) |
| |
|
constexpr pw::Allocator & | allocator () |
| |
|
constexpr const pw::Allocator & | allocator () const |
| |
| void * | DoAllocate (Layout layout) override |
| |
| void | DoDeallocate (void *ptr) override |
| |
| bool | DoResize (void *ptr, size_t new_size) override |
| |
| bool | DoBeforeReallocate (void *ptr, Layout new_layout) override |
| |
| void | DoAfterReallocateCopy (void *ptr, Layout new_layout, void *new_ptr) override |
| |
| void | DoAfterReallocateDone (Layout new_layout, void *new_ptr) override |
| |
| size_t | DoGetAllocated () const override |
| |
| std::optional< Fragmentation > | DoMeasureFragmentation () const override |
| | Returns fragmentation information for the allocator's memory region.
|
| |
| Result< Layout > | DoGetInfo (InfoType info_type, const void *ptr) const override |
| |
|
constexpr | Allocator () noexcept=default |
| | TODO(b/326509341): Remove when downstream consumers migrate.
|
| |
|
constexpr | Allocator (const Capabilities &capabilities) noexcept |
| |
| virtual void * | DoAllocate (Layout layout)=0 |
| |
| virtual bool | DoResize (void *ptr, size_t new_size) |
| |
| virtual void * | DoReallocate (void *ptr, Layout new_layout) |
| |
| virtual bool | DoBeforeReallocate (void *ptr, Layout new_layout) |
| |
| virtual void | DoAfterReallocateCopy (void *ptr, Layout new_layout, void *new_ptr) |
| |
| virtual void | DoAfterReallocateDone (Layout new_layout, void *new_ptr) |
| |
| virtual size_t | DoGetAllocated () const |
| |
| virtual std::optional< Fragmentation > | DoMeasureFragmentation () const |
| | Returns fragmentation information for the allocator's memory region.
|
| |
|
constexpr | Deallocator ()=default |
| | TODO(b/326509341): Remove when downstream consumers migrate.
|
| |
|
constexpr | Deallocator (const Capabilities &capabilities) |
| |
| Result< Layout > | GetInfo (InfoType info_type, const void *ptr) const |
| |
| Result< Layout > | GetRequestedLayout (const void *ptr) const |
| |
| Result< Layout > | GetUsableLayout (const void *ptr) const |
| |
| Result< Layout > | GetAllocatedLayout (const void *ptr) const |
| |
| bool | Recognizes (const void *ptr) const |
| |
| virtual void | DoDeallocate (void *ptr)=0 |
| |
| virtual Result< Layout > | DoGetInfo (InfoType, const void *) const |
| |
|
|
static constexpr size_t | Distance (const void *start, const void *end) |
| | Returns the distance between two pointers in bytes.
|
| |
| static void | UpdateOffsets (void *frame, void *data, void *suffix) |
| |
|
| static void * | GetFrame (void *data, bool has_suffix, bool checked=true) |
| |
|
static const void * | GetFrame (const void *data, bool has_suffix, bool checked=true) |
| |
|
| static void * | GetData (void *frame, Result< size_t > frame_size, Layout prefix) |
| |
|
static const void * | GetData (const void *frame, Result< size_t > frame_size, Layout prefix) |
| |
|
| static void * | GetSuffix (void *data, size_t data_size, Layout suffix) |
| |
|
static const void * | GetSuffix (const void *data, size_t data_size, Layout suffix) |
| |
| static bool | BeforeReallocate (Allocator &allocator, void *ptr, Layout new_layout) |
| |
| static void | AfterReallocateCopy (Allocator &allocator, void *ptr, Layout new_layout, void *new_ptr) |
| |
| static void | AfterReallocateDone (Allocator &allocator, Layout new_layout, void *new_ptr) |
| |
| static Result< Layout > | GetInfo (const Deallocator &deallocator, InfoType info_type, const void *ptr) |
| |
| static Result< Layout > | GetRequestedLayout (const Deallocator &deallocator, const void *ptr) |
| |
| static Result< Layout > | GetUsableLayout (const Deallocator &deallocator, const void *ptr) |
| |
| static Result< Layout > | GetAllocatedLayout (const Deallocator &deallocator, const void *ptr) |
| |
| static bool | Recognizes (const Deallocator &deallocator, const void *ptr) |
| |
|
|
using | Fragmentation = allocator::Fragmentation |
| |
|
using | Capabilities = allocator::Capabilities |
| |
|
using | Capability = allocator::Capability |
| |
|
using | Layout = allocator::Layout |
| |
| 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) |
| |
| template<typename ElementType > |
| void | Destroy (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) |
| |
| enum class | InfoType {
kRequestedLayoutOf
, kUsableLayoutOf
, kAllocatedLayoutOf
, kCapacity
,
kRecognizes
} |
| |
|
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> |
| |