xentara-utils v2.0.4
The Xentara Utility Library
Loading...
Searching...
No Matches
xentara::utils::io::AbstractBufferedOutputStream< Element > Class Template Reference

Base class for output streams that use a private allocated write buffer. More...

#include <xentara/utils/io/AbstractBufferedOutputStream.hpp>

+ Inheritance diagram for xentara::utils::io::AbstractBufferedOutputStream< Element >:

Public Member Functions

 AbstractBufferedOutputStream ()=default
 Default constructor Creates a stream without a buffer.
 
- Public Member Functions inherited from xentara::utils::io::OutputStream< Element >
virtual ~OutputStream () noexcept(false)=0
 Virtual, throwing destructor.
 
auto write (Element element) -> void
 Write a single element to the stream.
 
template<std::ranges::contiguous_range Data>
requires std::same_as<std::remove_cv_t<std::ranges::range_value_t<Data>>, Element>
auto write (const Data &data) -> void
 Write a block of data.
 
template<std::size_t kDataSize>
auto write (const Element(&data)[kDataSize]) -> void
 Write a block of data contained in an array.
 
template<std::contiguous_iterator Iterator, std::sized_sentinel_for< Iterator > Sentinel>
requires std::same_as<std::remove_cv_t<std::iter_value_t<Iterator>>, Element>
auto write (Iterator first, Sentinel last) -> void
 Write a block of data contained in an iterator range.
 
auto write (const Element *data, std::size_t size) -> void
 Write a block of data contained in a region of memory.
 
auto write (const Element *nullTerminatedString) -> void
 Write a NULL-teminated string.
 
auto flush () -> void
 Flushes the buffer.
 
- Public Member Functions inherited from xentara::utils::io::StreamBase
virtual ~StreamBase () noexcept(false)=0
 Virtual, throwing destructor.
 
auto streamDescription () const -> std::string
 Get a description of the device.
 

Protected Member Functions

auto resetOutputBuffer (std::size_t bufferSizeHint=kDefaultBufferSize) -> void
 Resets the buffer.
 
auto destroyOutputBuffer () -> void
 Destroys the buffer.
 
- Protected Member Functions inherited from xentara::utils::io::OutputStream< Element >
 OutputStream () noexcept=default
 Default constructor.
 
 OutputStream (Element *bufferBegin, Element *bufferEnd) noexcept
 Constructor that sets an initially empty buffer.
 
 OutputStream (Element *bufferBegin, Element *bufferEnd, Element *dataEnd) noexcept
 Constructor that sets a buffer that possibly already contains some data.
 
 OutputStream (OutputStream &&other) noexcept
 Move constructor.
 
auto operator= (OutputStream &&rhs) noexcept -> OutputStream &
 Move assignemnt operator.
 
auto setWriteBuffer (Element *bufferBegin, Element *bufferEnd) noexcept -> void
 Sets a new empty buffer.
 
auto setWriteBuffer (Element *bufferBegin, Element *bufferEnd, Element *dataEnd) noexcept -> void
 Sets the buffer.
 
auto setWriteDataEnd (Element *dataEnd) noexcept -> void
 Sets the end of the data within the buffer.
 
auto writeBufferBegin () const -> Element *
 Writes back the buffer start position.
 
auto writeBufferEnd () const -> Element *
 Writes back the buffer end position.
 
auto writeBufferSize () const -> std::size_t
 Gets the buffer size.
 
auto writeDataBegin () const -> Element *
 Returns the beginning of data in the buffer.
 
auto writeDataEnd () const -> Element *
 Returns the end of the data in the buffer.
 
auto writeDataSize () const -> std::size_t
 Returns the size of the unwritten data in the buffer.
 
auto freeBufferBegin () const -> Element *
 Returns the beginning of the free region of the buffer.
 
auto freeBufferSize () const -> std::size_t
 Returns the size of the unwritten data in the buffer.
 
virtual auto doFlushWriteBuffer () -> void
 Called by the framework to write the buffered data to the underlying device once it is full.
 
virtual auto doWrite (const Element *data, std::size_t size) -> std::size_t=0
 Called by the framework to write data from a memory region to the underlying device.
 
- Protected Member Functions inherited from xentara::utils::io::StreamBase
virtual auto doGetStreamDescription () const -> std::string=0
 Called by the framework to get a description of the stream.
 

Static Protected Attributes

static const std::size_t kDefaultBufferSize
 The default buffer size.
 

Additional Inherited Members

- Public Types inherited from xentara::utils::io::OutputStream< Element >
using element_type = Element
 The element type.
 

Detailed Description

template<StreamElement Element>
class xentara::utils::io::AbstractBufferedOutputStream< Element >

Base class for output streams that use a private allocated write buffer.

Constructor & Destructor Documentation

◆ AbstractBufferedOutputStream()

template<StreamElement Element>
xentara::utils::io::AbstractBufferedOutputStream< Element >::AbstractBufferedOutputStream ( )
default

Default constructor Creates a stream without a buffer.

Member Function Documentation

◆ destroyOutputBuffer()

template<StreamElement Element>
auto xentara::utils::io::AbstractBufferedOutputStream< Element >::destroyOutputBuffer ( ) -> void
protected

Destroys the buffer.

◆ resetOutputBuffer()

template<StreamElement Element>
auto xentara::utils::io::AbstractBufferedOutputStream< Element >::resetOutputBuffer ( std::size_t  bufferSizeHint = kDefaultBufferSize) -> void
protected

Resets the buffer.

This function empties the buffer if it exists, or creates a new buffer if not.

Parameters
bufferSizeHintThe size of the new buffer if none exists yet. Ignored if there is a buffer already.

Member Data Documentation

◆ kDefaultBufferSize

template<StreamElement Element>
const std::size_t xentara::utils::io::AbstractBufferedOutputStream< Element >::kDefaultBufferSize
staticprotected

The default buffer size.