StormByte C++ Library: Buffer module 1.2.0
StormByte-Buffer is the buffer module of the StormByte C++ suite.
Loading...
Searching...
No Matches
List of all members
StormByte::Buffer::ReadOnly Class Referenceabstract

Pure interface for a buffer that can be read but not written. More...

#include <StormByte/buffer/generic.hxx>

Inheritance diagram for StormByte::Buffer::ReadOnly:
Inheritance graph
[legend]
Collaboration diagram for StormByte::Buffer::ReadOnly:
Collaboration graph
[legend]

Public Member Functions

Constructors / destructor / assignment
 ReadOnly () noexcept
 Default construct.
 
 ReadOnly (const ReadOnly &) noexcept=default
 Copy construct.
 
 ReadOnly (ReadOnly &&) noexcept=default
 Move construct.
 
virtual ~ReadOnly () noexcept
 Virtual destructor.
 
ReadOnlyoperator= (const ReadOnly &)=default
 Copy assign.
 
ReadOnlyoperator= (ReadOnly &&) noexcept=default
 Move assign.
 
Queries
virtual std::size_t AvailableBytes () const noexcept=0
 Bytes available from the current read position.
 
virtual const DataTypeData () const noexcept=0
 Access a view of the internal storage (implementation-defined).
 
virtual bool Empty () const noexcept=0
 Whether the buffer holds no stored bytes.
 
virtual bool EoF () const noexcept=0
 End-of-stream condition.
 
virtual bool IsReadable () const noexcept=0
 Whether the buffer can still be read.
 
virtual std::size_t Size () const noexcept=0
 Total number of bytes stored.
 
Maintenance
virtual void Clean () noexcept=0
 Discard data from the start up to the current read position.
 
virtual void Clear () noexcept=0
 Clear all buffer contents and reset logical positions.
 
virtual bool Drop (const std::size_t &count) noexcept=0
 Discard count unread bytes.
 
virtual void Seek (const std::ptrdiff_t &offset, const Position &mode) const noexcept=0
 Move the logical read position for non-destructive reads.
 
Extract (destructive)
virtual bool Extract (const std::size_t &count, DataType &outBuffer) noexcept=0
 Extract bytes into a DataType.
 
bool Extract (DataType &outBuffer) noexcept
 Extract all available bytes into a DataType.
 
virtual bool Extract (const std::size_t &count, WriteOnly &outBuffer) noexcept=0
 Extract bytes into a WriteOnly.
 
bool Extract (WriteOnly &outBuffer) noexcept
 Extract all available bytes into a WriteOnly.
 
virtual void ExtractUntilEoF (DataType &outBuffer) noexcept=0
 Extract until EoF into a DataType.
 
virtual void ExtractUntilEoF (WriteOnly &outBuffer) noexcept=0
 Extract until EoF into a WriteOnly.
 
Peek (non-destructive, does not advance)
virtual bool Peek (const std::size_t &count, DataType &outBuffer) const noexcept=0
 Peek into a DataType without advancing the read position.
 
virtual bool Peek (const std::size_t &count, WriteOnly &outBuffer) const noexcept=0
 Peek into a WriteOnly without advancing the read position.
 
Read (non-destructive, advances position)
virtual bool Read (const std::size_t &count, DataType &outBuffer) const noexcept=0
 Read into a DataType.
 
bool Read (DataType &outBuffer) const noexcept
 Read all available bytes into a DataType.
 
virtual bool Read (const std::size_t &count, WriteOnly &outBuffer) const noexcept=0
 Read into a WriteOnly.
 
bool Read (WriteOnly &outBuffer) const noexcept
 Read all available bytes into a WriteOnly.
 
virtual void ReadUntilEoF (DataType &outBuffer) const noexcept=0
 Read until EoF into a DataType.
 
virtual void ReadUntilEoF (WriteOnly &outBuffer) const noexcept=0
 Read until EoF into a WriteOnly.
 
- Public Member Functions inherited from StormByte::Buffer::Generic
 Generic () noexcept=default
 Default construct.
 
 Generic (const Generic &) noexcept=default
 Copy construct.
 
 Generic (Generic &&) noexcept=default
 Move construct.
 
virtual ~Generic () noexcept=0
 Pure virtual destructor (keeps the class abstract).
 
Genericoperator= (const Generic &other)=default
 Copy assign.
 
Genericoperator= (Generic &&) noexcept=default
 Move assign.
 

Additional Inherited Members

- Static Protected Member Functions inherited from StormByte::Buffer::Generic
template<Type::ByteInputRange Src>
static DataType DataConvert (const Src &src) noexcept
 Convert an lvalue input range to DataType.
 
template<Type::ByteInputRange Src>
static DataType DataConvert (Src &&src) noexcept
 Convert an rvalue input range to DataType (moves when already DataType).
 
static DataType DataConvert (std::string_view sv) noexcept
 Convert a string view to DataType (no trailing NUL).
 
static DataType DataConvert (const char *s) noexcept
 Convert a null-terminated C string to DataType.
 

Detailed Description

Pure interface for a buffer that can be read but not written.

All read / extract / peek / seek contracts used by concrete buffers (FIFO, Ring, Consumer, …) are declared here.

See also
WriteOnly, ReadWrite, Generic

Constructor & Destructor Documentation

◆ ReadOnly() [1/3]

StormByte::Buffer::ReadOnly::ReadOnly ( )
inlinenoexcept

Default construct.

◆ ReadOnly() [2/3]

StormByte::Buffer::ReadOnly::ReadOnly ( const ReadOnly )
defaultnoexcept

Copy construct.

◆ ReadOnly() [3/3]

StormByte::Buffer::ReadOnly::ReadOnly ( ReadOnly &&  )
defaultnoexcept

Move construct.

◆ ~ReadOnly()

virtual StormByte::Buffer::ReadOnly::~ReadOnly ( )
virtualnoexcept

Virtual destructor.

Member Function Documentation

◆ AvailableBytes()

virtual std::size_t StormByte::Buffer::ReadOnly::AvailableBytes ( ) const
pure virtualnoexcept

Bytes available from the current read position.

Returns
Unread byte count.

Implemented in StormByte::Buffer::FIFO, StormByte::Buffer::Consumer, StormByte::Buffer::Ring, and StormByte::Buffer::SharedFIFO.

◆ Clean()

virtual void StormByte::Buffer::ReadOnly::Clean ( )
pure virtualnoexcept

Discard data from the start up to the current read position.

See also
Size(), Empty()

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, StormByte::Buffer::Ring, and StormByte::Buffer::SharedFIFO.

◆ Clear()

virtual void StormByte::Buffer::ReadOnly::Clear ( )
pure virtualnoexcept

Clear all buffer contents and reset logical positions.

Closed / error flags are implementation-defined (typically preserved).

See also
Size(), Empty()

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, StormByte::Buffer::Ring, and StormByte::Buffer::SharedFIFO.

◆ Data()

virtual const DataType & StormByte::Buffer::ReadOnly::Data ( ) const
pure virtualnoexcept

Access a view of the internal storage (implementation-defined).

Returns
Constant reference to a DataType.

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, StormByte::Buffer::Ring, and StormByte::Buffer::SharedFIFO.

◆ Drop()

virtual bool StormByte::Buffer::ReadOnly::Drop ( const std::size_t &  count)
pure virtualnoexcept

Discard count unread bytes.

Parameters
countNumber of bytes to drop.
Returns
true on success, false if fewer bytes were available.
See also
Read()

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, StormByte::Buffer::Ring, and StormByte::Buffer::SharedFIFO.

◆ Empty()

virtual bool StormByte::Buffer::ReadOnly::Empty ( ) const
pure virtualnoexcept

Whether the buffer holds no stored bytes.

Returns
true if empty.
See also
Size()

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, StormByte::Buffer::Ring, and StormByte::Buffer::SharedFIFO.

◆ EoF()

virtual bool StormByte::Buffer::ReadOnly::EoF ( ) const
pure virtualnoexcept

End-of-stream condition.

Returns
true when closed (or in error) and no unread bytes remain.

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, StormByte::Buffer::Ring, and StormByte::Buffer::SharedFIFO.

◆ Extract() [1/4]

virtual bool StormByte::Buffer::ReadOnly::Extract ( const std::size_t &  count,
DataType outBuffer 
)
inlinepure virtualnoexcept

Extract bytes into a DataType.

Parameters
countBytes to extract; 0 = all available.
outBufferDestination.
Returns
true on success, false on failure.

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, StormByte::Buffer::Ring, and StormByte::Buffer::FIFO.

◆ Extract() [2/4]

virtual bool StormByte::Buffer::ReadOnly::Extract ( const std::size_t &  count,
WriteOnly outBuffer 
)
inlinepure virtualnoexcept

Extract bytes into a WriteOnly.

Parameters
countBytes to extract; 0 = all available.
outBufferDestination writer.
Returns
true on success, false on failure.

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, StormByte::Buffer::Ring, and StormByte::Buffer::FIFO.

◆ Extract() [3/4]

bool StormByte::Buffer::ReadOnly::Extract ( DataType outBuffer)
inlinenoexcept

Extract all available bytes into a DataType.

Parameters
outBufferDestination.
Returns
true on success, false on failure.

◆ Extract() [4/4]

bool StormByte::Buffer::ReadOnly::Extract ( WriteOnly outBuffer)
inlinenoexcept

Extract all available bytes into a WriteOnly.

Parameters
outBufferDestination writer.
Returns
true on success, false on failure.

◆ ExtractUntilEoF() [1/2]

virtual void StormByte::Buffer::ReadOnly::ExtractUntilEoF ( DataType outBuffer)
pure virtualnoexcept

Extract until EoF into a DataType.

Parameters
outBufferDestination.

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, and StormByte::Buffer::Ring.

◆ ExtractUntilEoF() [2/2]

virtual void StormByte::Buffer::ReadOnly::ExtractUntilEoF ( WriteOnly outBuffer)
pure virtualnoexcept

Extract until EoF into a WriteOnly.

Parameters
outBufferDestination writer.

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, and StormByte::Buffer::Ring.

◆ IsReadable()

virtual bool StormByte::Buffer::ReadOnly::IsReadable ( ) const
pure virtualnoexcept

Whether the buffer can still be read.

Returns
false in permanent error state.

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, StormByte::Buffer::Ring, and StormByte::Buffer::SharedFIFO.

◆ operator=() [1/2]

ReadOnly & StormByte::Buffer::ReadOnly::operator= ( const ReadOnly )
default

Copy assign.

◆ operator=() [2/2]

ReadOnly & StormByte::Buffer::ReadOnly::operator= ( ReadOnly &&  )
defaultnoexcept

Move assign.

◆ Peek() [1/2]

virtual bool StormByte::Buffer::ReadOnly::Peek ( const std::size_t &  count,
DataType outBuffer 
) const
pure virtualnoexcept

Peek into a DataType without advancing the read position.

Parameters
countBytes to peek; 0 = all available.
outBufferDestination.
Returns
true on success, false if insufficient data or error.
  • count == 0: all available bytes (fails if none).
  • count > 0: exactly count bytes, or fail if fewer are available.
See also
Read(), Seek()

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, and StormByte::Buffer::Ring.

◆ Peek() [2/2]

virtual bool StormByte::Buffer::ReadOnly::Peek ( const std::size_t &  count,
WriteOnly outBuffer 
) const
pure virtualnoexcept

Peek into a WriteOnly without advancing the read position.

Parameters
countBytes to peek; 0 = all available.
outBufferDestination writer.
Returns
true on success, false if insufficient data or error.

Same count semantics as the DataType overload.

See also
Read(), Seek()

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, and StormByte::Buffer::Ring.

◆ Read() [1/4]

virtual bool StormByte::Buffer::ReadOnly::Read ( const std::size_t &  count,
DataType outBuffer 
) const
pure virtualnoexcept

Read into a DataType.

Parameters
countBytes to read; 0 = all available.
outBufferDestination.
Returns
true on success, false on failure.

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, StormByte::Buffer::Ring, and StormByte::Buffer::FIFO.

◆ Read() [2/4]

virtual bool StormByte::Buffer::ReadOnly::Read ( const std::size_t &  count,
WriteOnly outBuffer 
) const
pure virtualnoexcept

Read into a WriteOnly.

Parameters
countBytes to read; 0 = all available.
outBufferDestination writer.
Returns
true on success, false on failure.

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, StormByte::Buffer::Ring, and StormByte::Buffer::FIFO.

◆ Read() [3/4]

bool StormByte::Buffer::ReadOnly::Read ( DataType outBuffer) const
inlinenoexcept

Read all available bytes into a DataType.

Parameters
outBufferDestination.
Returns
true on success, false on failure.

◆ Read() [4/4]

bool StormByte::Buffer::ReadOnly::Read ( WriteOnly outBuffer) const
inlinenoexcept

Read all available bytes into a WriteOnly.

Parameters
outBufferDestination writer.
Returns
true on success, false on failure.

◆ ReadUntilEoF() [1/2]

virtual void StormByte::Buffer::ReadOnly::ReadUntilEoF ( DataType outBuffer) const
pure virtualnoexcept

Read until EoF into a DataType.

Parameters
outBufferDestination.

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, and StormByte::Buffer::Ring.

◆ ReadUntilEoF() [2/2]

virtual void StormByte::Buffer::ReadOnly::ReadUntilEoF ( WriteOnly outBuffer) const
pure virtualnoexcept

Read until EoF into a WriteOnly.

Parameters
outBufferDestination writer.

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, and StormByte::Buffer::Ring.

◆ Seek()

virtual void StormByte::Buffer::ReadOnly::Seek ( const std::ptrdiff_t &  offset,
const Position mode 
) const
pure virtualnoexcept

Move the logical read position for non-destructive reads.

Parameters
offsetOffset value.
modePosition::Absolute or Position::Relative.

Position is clamped to [0, Size()]. Absolute + negative offset is a no-op.

See also
Read(), Position

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, StormByte::Buffer::Ring, and StormByte::Buffer::SharedFIFO.

◆ Size()

virtual std::size_t StormByte::Buffer::ReadOnly::Size ( ) const
pure virtualnoexcept

Total number of bytes stored.

Returns
Size in bytes.
See also
Empty()

Implemented in StormByte::Buffer::Consumer, StormByte::Buffer::FIFO, StormByte::Buffer::Ring, and StormByte::Buffer::SharedFIFO.


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