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

A stream that writes to an io::OutputDevice. More...

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

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

Public Member Functions

 DeviceOutputStream () noexcept=default
 Default constructor.
 
 DeviceOutputStream (std::reference_wrapper< OutputDevice > device) noexcept
 Constructor that sets the device.
 
- Public Member Functions inherited from xentara::utils::io::AbstractBufferedOutputStream< Element >
 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.
 

Additional Inherited Members

- Public Types inherited from xentara::utils::io::OutputStream< Element >
using element_type = Element
 The element type.
 
- Protected Member Functions inherited from xentara::utils::io::AbstractDeviceOutputStream< Element >
virtual auto outputDevice () noexcept -> OutputDevice &=0
 Called by the framework to get the device.
 
auto doGetStreamDescription () const -> std::string override
 Implementation of InputStream::doGetStreamDescription()
 
auto doWrite (const Element *data, std::size_t size) -> std::size_t final
 Implementation of InputStream::doWrite()
 
- Protected Member Functions inherited from xentara::utils::io::AbstractBufferedOutputStream< Element >
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.
 
- Static Protected Attributes inherited from xentara::utils::io::AbstractBufferedOutputStream< Element >
static const std::size_t kDefaultBufferSize
 The default buffer size.
 

Detailed Description

template<StreamElement Element>
requires (sizeof(Element) == sizeof(std::byte))
class xentara::utils::io::DeviceOutputStream< Element >

A stream that writes to an io::OutputDevice.

Constructor & Destructor Documentation

◆ DeviceOutputStream() [1/2]

template<StreamElement Element>
xentara::utils::io::DeviceOutputStream< Element >::DeviceOutputStream ( )
defaultnoexcept

Default constructor.

This constructor does not set a device. you must assign a valid object before using the class.

◆ DeviceOutputStream() [2/2]

template<StreamElement Element>
xentara::utils::io::DeviceOutputStream< Element >::DeviceOutputStream ( std::reference_wrapper< OutputDevice device)
noexcept

Constructor that sets the device.

Parameters
deviceThe device to write to