Skip to main content
Pigweed's logo Pigweed
  1. Home
  2. Reference
  3. C/C++
  4. pw::allocator::internal::BaseFramingAllocator Class Reference
Loading...
Searching...
No Matches
pw::allocator::internal::BaseFramingAllocator Class Reference

Overview

Base type that simply provides better assertion messages.

Inheritance diagram for pw::allocator::internal::BaseFramingAllocator:
pw::allocator::ForwardingAllocator pw::Allocator pw::Deallocator pw::allocator::FramingAllocator< Prefix, Suffix >

Protected Member Functions

constexpr BaseFramingAllocator (Allocator &allocator)
 
- Protected Member Functions inherited from pw::allocator::ForwardingAllocator
constexpr ForwardingAllocator (const Capabilities &capabilities) noexcept
 
constexpr ForwardingAllocator (pw::Allocator &allocator) noexcept
 
constexpr void Init (pw::Allocator &allocator)
 
constexpr pw::Allocatorallocator ()
 
constexpr const pw::Allocatorallocator () const
 
void * DoAllocate (Layout layout) override
 
void DoDeallocate (void *ptr) override
 
bool DoResize (void *ptr, size_t new_size) override
 
void 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< FragmentationDoMeasureFragmentation () const override
 Returns fragmentation information for the allocator's memory region.
 
Result< LayoutDoGetInfo (InfoType info_type, const void *ptr) const override
 
- Protected Member Functions inherited from pw::Allocator
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 void 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< FragmentationDoMeasureFragmentation () const
 Returns fragmentation information for the allocator's memory region.
 
- 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
 

Static Protected Member Functions

static bool CrashOnUnalignedIfStrict (bool strict, const void *data)
 
static bool CrashOnBadDataIfStrict (bool strict, const void *data)
 
static bool CrashOnBadPrefixOffsetIfStrict (bool strict, const void *data, size_t prefix_offset, size_t min_size=0)
 
static bool CrashOnWrongPrefixOffsetIfStrict (bool strict, const void *data, size_t data_prefix_offset, const void *frame, size_t frame_prefix_offset)
 
static bool CrashOnBadSuffixOffsetIfStrict (bool strict, const void *data, size_t suffix_offset, size_t usable_size)
 
static bool CrashOnUnrecognized (bool strict, const void *frame)
 
- Static Protected Member Functions inherited from pw::Allocator
static void 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 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)
 

Additional Inherited Members

- Public Types inherited from pw::Allocator
using Fragmentation = allocator::Fragmentation
 
- Public Types inherited from pw::Deallocator
using Capabilities = allocator::Capabilities
 
using Capability = allocator::Capability
 
using Layout = allocator::Layout
 
- Public Member Functions inherited from pw::Allocator
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< FragmentationMeasureFragmentation () const
 Returns fragmentation information for the allocator's memory region.
 
- 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)
 
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)
 
- Protected Types inherited from pw::Deallocator
enum class  InfoType {
  kRequestedLayoutOf , kUsableLayoutOf , kAllocatedLayoutOf , kCapacity ,
  kRecognizes
}
 
- 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>
 

Member Function Documentation

◆ CrashOnBadDataIfStrict()

static bool pw::allocator::internal::BaseFramingAllocator::CrashOnBadDataIfStrict ( bool  strict,
const void *  data 
)
staticprotected

Triggers an assertion indicating that the given data pointer cannot be converted to a frame if strict is true; otherwise returns false.

◆ CrashOnBadPrefixOffsetIfStrict()

static bool pw::allocator::internal::BaseFramingAllocator::CrashOnBadPrefixOffsetIfStrict ( bool  strict,
const void *  data,
size_t  prefix_offset,
size_t  min_size = 0 
)
staticprotected

Triggers an assertion indicating that the given prefix offset appears corrupted if strict is true; otherwise returns false.

◆ CrashOnBadSuffixOffsetIfStrict()

static bool pw::allocator::internal::BaseFramingAllocator::CrashOnBadSuffixOffsetIfStrict ( bool  strict,
const void *  data,
size_t  suffix_offset,
size_t  usable_size 
)
staticprotected

Triggers an assertion indicating that the given prefix offset appears corrupted if strict is true; otherwise returns false.

◆ CrashOnUnalignedIfStrict()

static bool pw::allocator::internal::BaseFramingAllocator::CrashOnUnalignedIfStrict ( bool  strict,
const void *  data 
)
staticprotected

Triggers an assertion indicating that the given data pointer is not properly aligned if strict is true; otherwise returns false.

◆ CrashOnUnrecognized()

static bool pw::allocator::internal::BaseFramingAllocator::CrashOnUnrecognized ( bool  strict,
const void *  frame 
)
staticprotected

Triggers an assertion indicating that the given frame pointer is not recognized by the underlying allocator if strict is true; otherwise returns false.

◆ CrashOnWrongPrefixOffsetIfStrict()

static bool pw::allocator::internal::BaseFramingAllocator::CrashOnWrongPrefixOffsetIfStrict ( bool  strict,
const void *  data,
size_t  data_prefix_offset,
const void *  frame,
size_t  frame_prefix_offset 
)
staticprotected

Triggers an assertion indicating that the prefix offsets do not match if strict is true; otherwise returns false.


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