Pigweed
 
Loading...
Searching...
No Matches
pw::multibuf::Stream Class Reference

#include <stream.h>

Inheritance diagram for pw::multibuf::Stream:
pw::stream::SeekableReaderWriter pw::stream::RelativeSeekableReaderWriter pw::stream::ReaderWriter pw::stream::Stream

Public Member Functions

 Stream (MultiBuf &multibuf)
 
constexpr const MultiBufmultibuf () const
 Returns the MultiBuf backing this stream.
 
- Public Member Functions inherited from pw::stream::SeekableReaderWriter
SeekableReaderas_seekable_reader ()
 
const SeekableReaderas_seekable_reader () const
 
 operator SeekableReader & ()
 
 operator const SeekableReader & () const
 
SeekableWriteras_seekable_writer ()
 
const SeekableWriteras_seekable_writer () const
 
 operator SeekableWriter & ()
 
 operator const SeekableWriter & () const
 
- Public Member Functions inherited from pw::stream::RelativeSeekableReaderWriter
 operator RelativeSeekableReader & ()
 
 operator const RelativeSeekableReader & () const
 
 operator RelativeSeekableWriter & ()
 
 operator const RelativeSeekableWriter & () const
 
- Public Member Functions inherited from pw::stream::ReaderWriter
Readeras_reader ()
 
const Readeras_reader () const
 
 operator Reader & ()
 
 operator const Reader & () const
 
Writeras_writer ()
 
const Writeras_writer () const
 
 operator Writer & ()
 
 operator const Writer & () const
 
- Public Member Functions inherited from pw::stream::Stream
constexpr bool readable () const
 
constexpr bool writable () const
 
constexpr bool seekable () const
 
constexpr bool seekable (Whence origin) const
 True if the stream supports seeking from the specified origin.
 
Result< ByteSpan > Read (ByteSpan dest)
 
Result< ByteSpan > Read (void *dest, size_t size_bytes)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
Result< ByteSpan > ReadExact (ByteSpan const buffer)
 
Status Write (ConstByteSpan data)
 
Status Write (const void *data, size_t size_bytes)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
Status Write (const std::byte b)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 
Status Seek (ptrdiff_t offset, Whence origin=kBeginning)
 
size_t Tell ()
 
size_t ConservativeReadLimit () const
 
size_t ConservativeWriteLimit () const
 

Private Member Functions

Status DoWrite (ConstByteSpan data) override
 Virtual Write() function implemented by derived classes.
 
StatusWithSize DoRead (ByteSpan destination) override
 Virtual Read() function implemented by derived classes.
 
Status DoSeek (ptrdiff_t offset, Whence origin) override
 
size_t DoTell () override
 
size_t ConservativeLimit (LimitType) const override
 

Additional Inherited Members

- Public Types inherited from pw::stream::Stream
enum  Whence : uint8_t { kBeginning = 0b001 , kCurrent = 0b010 , kEnd = 0b100 }
 Positions from which to seek. More...
 
- Static Public Attributes inherited from pw::stream::Stream
static constexpr size_t kUnlimited = std::numeric_limits<size_t>::max()
 Value returned from read/write limit if unlimited.
 
static constexpr size_t kUnknownPosition = std::numeric_limits<size_t>::max()
 Returned by Tell() if getting the position is not supported.
 
- Protected Types inherited from pw::stream::Stream
enum class  LimitType : bool { kRead , kWrite }
 

Detailed Description

A readable, writable, and seekable Stream implementation backed by a MultiBuf.

Member Function Documentation

◆ ConservativeLimit()

size_t pw::multibuf::Stream::ConservativeLimit ( LimitType  limit_type) const
inlineoverrideprivatevirtual

Virtual function optionally implemented by derived classes that is used for ConservativeReadLimit() and ConservativeWriteLimit().

The default implementation returns kUnlimited or 0 depending on whether the stream is readable/writable.

Reimplemented from pw::stream::Stream.

◆ DoRead()

StatusWithSize pw::multibuf::Stream::DoRead ( ByteSpan  destination)
overrideprivatevirtual

Virtual Read() function implemented by derived classes.

Implements pw::stream::Stream.

◆ DoSeek()

Status pw::multibuf::Stream::DoSeek ( ptrdiff_t  offset,
Whence  origin 
)
overrideprivatevirtual

Seeks the writer's cursor position within the multibuf. Only forward seeking is permitted; attempting to seek backwards will result in an OUT_OF_RANGE. This operation is O(multibuf().Chunks().size()).

Implements pw::stream::Stream.

◆ DoTell()

size_t pw::multibuf::Stream::DoTell ( )
inlineoverrideprivatevirtual

Virtual Tell() function optionally implemented by derived classes. The default implementation always returns kUnknownPosition.

Reimplemented from pw::stream::Stream.

◆ DoWrite()

Status pw::multibuf::Stream::DoWrite ( ConstByteSpan  data)
overrideprivatevirtual

Virtual Write() function implemented by derived classes.

Implements pw::stream::Stream.


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