LMMS
Loading...
Searching...
No Matches
lmms::SharedMemoryResource Class Referencefinal

Similar to std::pmr::monotonic_buffer_resource, but the initial buffer can be replaced. More...

#include <SharedMemory.h>

Inheritance diagram for lmms::SharedMemoryResource:

Public Member Functions

 SharedMemoryResource ()=default
 SharedMemoryResource (void *buffer, std::size_t bufferSize) noexcept
 SharedMemoryResource (const SharedMemoryResource &)=delete
auto operator= (const SharedMemoryResource &) -> SharedMemoryResource &=delete
 SharedMemoryResource (SharedMemoryResource &&)=default
auto operator= (SharedMemoryResource &&) -> SharedMemoryResource &=default
void reset () noexcept
 Returns the buffer back to its initial state.
auto availableBytes () const noexcept -> std::size_t

Private Member Functions

void reset (void *newBuffer, std::size_t newBufferSize) noexcept
 Replaces the initial buffer.
voiddo_allocate (std::size_t bytes, std::size_t alignment) override
void do_deallocate (void *, std::size_t, std::size_t) override
bool do_is_equal (const std::pmr::memory_resource &other) const noexcept override

Private Attributes

voidm_buffer = nullptr
std::size_t m_availableBytes = 0
voidm_initialBuffer = nullptr
std::size_t m_initialBufferSize = 0

Friends

template<typename T>
class SharedMemory

Detailed Description

Similar to std::pmr::monotonic_buffer_resource, but the initial buffer can be replaced.

Constructor & Destructor Documentation

◆ SharedMemoryResource() [1/4]

lmms::SharedMemoryResource::SharedMemoryResource ( )
default

◆ SharedMemoryResource() [2/4]

lmms::SharedMemoryResource::SharedMemoryResource ( void * buffer,
std::size_t bufferSize )
inlinenoexcept

◆ SharedMemoryResource() [3/4]

lmms::SharedMemoryResource::SharedMemoryResource ( const SharedMemoryResource & )
delete

◆ SharedMemoryResource() [4/4]

lmms::SharedMemoryResource::SharedMemoryResource ( SharedMemoryResource && )
default

Member Function Documentation

◆ availableBytes()

auto lmms::SharedMemoryResource::availableBytes ( ) const -> std::size_t
inlinenoexcept
Returns
the number of bytes that can still be allocated

◆ do_allocate()

void * lmms::SharedMemoryResource::do_allocate ( std::size_t bytes,
std::size_t alignment )
inlineoverrideprivate

◆ do_deallocate()

void lmms::SharedMemoryResource::do_deallocate ( void * ,
std::size_t ,
std::size_t  )
inlineoverrideprivate

◆ do_is_equal()

bool lmms::SharedMemoryResource::do_is_equal ( const std::pmr::memory_resource & other) const
inlineoverrideprivatenoexcept

◆ operator=() [1/2]

auto lmms::SharedMemoryResource::operator= ( const SharedMemoryResource & ) -> SharedMemoryResource &=delete
delete

◆ operator=() [2/2]

auto lmms::SharedMemoryResource::operator= ( SharedMemoryResource && ) -> SharedMemoryResource &=default
default

◆ reset() [1/2]

void lmms::SharedMemoryResource::reset ( )
inlinenoexcept

Returns the buffer back to its initial state.

◆ reset() [2/2]

void lmms::SharedMemoryResource::reset ( void * newBuffer,
std::size_t newBufferSize )
inlineprivatenoexcept

Replaces the initial buffer.

◆ SharedMemory

template<typename T>
friend class SharedMemory
friend

Member Data Documentation

◆ m_availableBytes

std::size_t lmms::SharedMemoryResource::m_availableBytes = 0
private

◆ m_buffer

void* lmms::SharedMemoryResource::m_buffer = nullptr
private

◆ m_initialBuffer

void* lmms::SharedMemoryResource::m_initialBuffer = nullptr
private

◆ m_initialBufferSize

std::size_t lmms::SharedMemoryResource::m_initialBufferSize = 0
private

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