19#include <libcamera/base/span.h>
28 SharedMem(
const std::string &name, std::size_t size);
29 SharedMem(SharedMem &&rhs);
40 Span<uint8_t>
mem()
const
45 explicit operator bool()
const
58template<class T, typename = std::enable_if_t<std::is_standard_layout<T>::value>>
59class SharedMemObject :
public SharedMem
62 static constexpr std::size_t
kSize =
sizeof(T);
65 : SharedMem(), obj_(nullptr)
69 template<
class... Args>
71 : SharedMem(name,
kSize), obj_(nullptr)
76 obj_ =
new (
mem().data()) T(std::forward<Args>(args)...);
80 : SharedMem(std::move(rhs))
82 this->obj_ = rhs.obj_;
92 SharedMemObject<T> &
operator=(SharedMemObject<T> &&rhs)
95 this->obj_ = rhs.obj_;
Utilities to help constructing class interfaces.
#define LIBCAMERA_DISABLE_COPY(klass)
Disable copy construction and assignment of the klass.
Definition class.h:27
RAII-style wrapper for file descriptors.
Definition shared_fd.h:17
Helper class to allocate an object in shareable memory.
Definition shared_mem_object.h:60
static constexpr std::size_t kSize
The size of the object stored in shared memory.
Definition shared_mem_object.h:62
const T * operator->() const
Dereference the stored object.
Definition shared_mem_object.h:105
SharedMemObject(const std::string &name, Args &&...args)
Construct a SharedMemObject.
Definition shared_mem_object.h:70
const T & operator*() const
Dereference the stored object.
Definition shared_mem_object.h:115
T * operator->()
Dereference the stored object.
Definition shared_mem_object.h:100
SharedMemObject(SharedMemObject< T > &&rhs)
Move constructor for SharedMemObject.
Definition shared_mem_object.h:79
T & operator*()
Dereference the stored object.
Definition shared_mem_object.h:110
SharedMemObject< T > & operator=(SharedMemObject< T > &&rhs)
Move assignment operator for SharedMemObject.
Definition shared_mem_object.h:92
~SharedMemObject()
Destroy the SharedMemObject instance.
Definition shared_mem_object.h:86
Helper class to allocate and manage memory shareable between processes.
Definition shared_mem_object.h:24
virtual ~SharedMem()
Destroy the SharedMem instance.
Definition shared_mem_object.cpp:100
Span< uint8_t > mem() const
Retrieve the underlying shared memory.
Definition shared_mem_object.h:40
SharedMem & operator=(SharedMem &&rhs)
Move assignment operator for SharedMem.
Definition shared_mem_object.cpp:110
const SharedFD & fd() const
Retrieve the file descriptor for the underlying shared memory.
Definition shared_mem_object.h:35
Top-level libcamera namespace.
Definition backtrace.h:17