26#ifndef LMMS_SHARED_MEMORY_H
27#define LMMS_SHARED_MEMORY_H
30#include <memory_resource>
42class SharedMemoryImpl;
56 auto temp = std::move(other);
89 , m_availableBytes{bufferSize}
90 , m_initialBuffer{buffer}
91 , m_initialBufferSize{bufferSize}
114 void reset(
void* newBuffer, std::size_t newBufferSize)
noexcept
122 void*
do_allocate(std::size_t bytes, std::size_t alignment)
override
125 if (!
p) {
throw std::bad_alloc{}; }
132 bool do_is_equal(
const std::pmr::memory_resource& other)
const noexcept override
134 return this == &other;
149 static_assert(std::is_trivial_v<T>,
"objects held in shared memory must be trivial");
150 static_assert(
sizeof(T) > 0);
197 static_assert(std::is_trivial_v<T>,
"objects held in shared memory must be trivial");
198 static_assert(
sizeof(T) > 0);
#define noexcept
Definition DistrhoDefines.h:72
#define final
Definition DistrhoDefines.h:74
uint8_t a
Definition Spc_Cpu.h:141
std::size_t size() const noexcept
Definition SharedMemory.h:234
SharedMemory(const SharedMemory &)=delete
detail::SharedMemoryData m_data
Definition SharedMemory.h:243
T & operator[](std::size_t index) const noexcept
Definition SharedMemory.h:237
SharedMemory & operator=(const SharedMemory &)=delete
void attach(std::string key)
Definition SharedMemory.h:207
SharedMemoryResource * resource() noexcept
Definition SharedMemory.h:240
void create(std::size_t size)
Definition SharedMemory.h:219
const std::string & key() const noexcept
Definition SharedMemory.h:231
void detach() noexcept
Definition SharedMemory.h:225
SharedMemory & operator=(SharedMemory &&)=default
SharedMemoryResource m_resource
Definition SharedMemory.h:244
void create(std::string key, std::size_t size)
Definition SharedMemory.h:213
SharedMemory(SharedMemory &&)=default
std::size_t size_bytes() const noexcept
Definition SharedMemory.h:235
T * get() const noexcept
Definition SharedMemory.h:232
std::size_t size() const noexcept
Definition SharedMemory.h:182
detail::SharedMemoryData m_data
Definition SharedMemory.h:190
T * get() const noexcept
Definition SharedMemory.h:180
SharedMemory(SharedMemory &&)=default
void attach(std::string key)
Definition SharedMemory.h:159
T * operator->() const noexcept
Definition SharedMemory.h:185
void create()
Definition SharedMemory.h:169
void create(std::string key)
Definition SharedMemory.h:164
std::size_t size_bytes() const noexcept
Definition SharedMemory.h:183
void detach() noexcept
Definition SharedMemory.h:174
T & operator*() const noexcept
Definition SharedMemory.h:186
SharedMemory & operator=(SharedMemory &&)=default
const std::string & key() const noexcept
Definition SharedMemory.h:179
SharedMemory(const SharedMemory &)=delete
SharedMemory & operator=(const SharedMemory &)=delete
Similar to std::pmr::monotonic_buffer_resource, but the initial buffer can be replaced.
Definition SharedMemory.h:84
void do_deallocate(void *, std::size_t, std::size_t) override
Definition SharedMemory.h:131
SharedMemoryResource()=default
SharedMemoryResource(void *buffer, std::size_t bufferSize) noexcept
Definition SharedMemory.h:87
void reset(void *newBuffer, std::size_t newBufferSize) noexcept
Replaces the initial buffer.
Definition SharedMemory.h:114
std::size_t m_initialBufferSize
Definition SharedMemory.h:141
bool do_is_equal(const std::pmr::memory_resource &other) const noexcept override
Definition SharedMemory.h:132
SharedMemoryResource(const SharedMemoryResource &)=delete
friend class SharedMemory
Definition SharedMemory.h:110
void reset() noexcept
Returns the buffer back to its initial state.
Definition SharedMemory.h:100
auto operator=(SharedMemoryResource &&) -> SharedMemoryResource &=default
SharedMemoryResource(SharedMemoryResource &&)=default
void * m_buffer
Definition SharedMemory.h:138
auto availableBytes() const noexcept -> std::size_t
Definition SharedMemory.h:107
void * do_allocate(std::size_t bytes, std::size_t alignment) override
Definition SharedMemory.h:122
auto operator=(const SharedMemoryResource &) -> SharedMemoryResource &=delete
std::size_t m_availableBytes
Definition SharedMemory.h:139
void * m_initialBuffer
Definition SharedMemory.h:140
Definition SharedMemory.h:45
friend void swap(SharedMemoryData &a, SharedMemoryData &b) noexcept
Definition SharedMemory.h:61
std::unique_ptr< SharedMemoryImpl > m_impl
Definition SharedMemory.h:75
void * m_ptr
Definition SharedMemory.h:76
std::string m_key
Definition SharedMemory.h:74
std::size_t arraySize() const noexcept
SharedMemoryData() noexcept
const std::string & key() const noexcept
Definition SharedMemory.h:69
void * get() const noexcept
Definition SharedMemory.h:70
Definition AudioBufferView.h:45
Definition AudioAlsa.cpp:35
Definition juce_Uuid.h:141
uch * p
Definition crypt.c:594
#define const
Definition zconf.h:137