12 #include <type_traits> 15 #include <libcamera/base/span.h> 27 const uint8_t *
base()
const {
return base_; }
28 uint32_t
offset()
const {
return (write_ ? write_ : read_) - base_; }
29 size_t size()
const {
return size_; }
33 int skip(
size_t size);
38 return read(reinterpret_cast<uint8_t *>(t),
sizeof(*t));
42 int read(
const Span<T> &data)
44 return read(reinterpret_cast<uint8_t *>(data.data()),
49 const std::remove_reference_t<T> *
read(
size_t count = 1)
51 using return_type =
const std::remove_reference_t<T> *;
52 return reinterpret_cast<return_type
>(
read(
sizeof(T), count));
58 return write(reinterpret_cast<const uint8_t *>(t),
sizeof(*t));
64 return write(reinterpret_cast<const uint8_t *>(data.data()),
73 int read(uint8_t *data,
size_t size);
74 const uint8_t *
read(
size_t size,
size_t count);
75 int write(
const uint8_t *data,
size_t size);
bool overflow() const
Check if the buffer has overflown.
Definition: byte_stream_buffer.h:30
Utilities to help constructing class interfaces.
int write(const Span< T > &data)
Write data to the managed memory buffer.
Definition: byte_stream_buffer.h:62
const uint8_t * base() const
Retrieve a pointer to the start location of the managed memory buffer.
Definition: byte_stream_buffer.h:27
Top-level libcamera namespace.
Definition: backtrace.h:17
ByteStreamBuffer(const uint8_t *base, size_t size)
Construct a read ByteStreamBuffer from the memory area base of size.
Definition: byte_stream_buffer.cpp:65
size_t size() const
Retrieve the size of the managed memory buffer.
Definition: byte_stream_buffer.h:29
uint32_t offset() const
Retrieve the offset of the current access location from the base.
Definition: byte_stream_buffer.h:28
int skip(size_t size)
Skip size bytes from the buffer.
Definition: byte_stream_buffer.cpp:203
#define LIBCAMERA_DISABLE_COPY(klass)
Disable copy construction and assignment of the klass.
ByteStreamBuffer & operator=(ByteStreamBuffer &&other)
Replace the contents of the buffer with those of other using move semantics.
Definition: byte_stream_buffer.cpp:104
ByteStreamBuffer carveOut(size_t size)
Carve out an area of size bytes into a new ByteStreamBuffer.
Definition: byte_stream_buffer.cpp:167
Wrap a memory buffer and provide sequential data read and write.
Definition: byte_stream_buffer.h:19
const std::remove_reference_t< T > * read(size_t count=1)
Read data from the managed memory buffer without performing a copy.
Definition: byte_stream_buffer.h:49
int write(const T *t)
Write t to the managed memory buffer.
Definition: byte_stream_buffer.h:56
int read(T *t)
Read data from the managed memory buffer into t.
Definition: byte_stream_buffer.h:36
int read(const Span< T > &data)
Read data from the managed memory buffer into Span data.
Definition: byte_stream_buffer.h:42