3#include <StormByte/buffer/generic.hxx>
4#include <StormByte/clonable.hxx>
16namespace StormByte::Buffer {
26 class STORMBYTE_BUFFER_PUBLIC
ExternalReader:
public Clonable<ExternalReader, std::unique_ptr<ExternalReader>> {
70 virtual
bool Read(std::
size_t bytes, DataType& out) const noexcept = 0;
79 virtual
bool Read(std::
size_t bytes, DataType& out) noexcept = 0;
134 inline PointerType Clone() const noexcept
override {
135 return MakePointer<ExternalBufferReader>(*
this);
142 inline PointerType
Move() noexcept
override {
143 return MakePointer<ExternalBufferReader>(std::move(*
this));
152 bool Read(std::size_t bytes, DataType& out)
const noexcept override;
160 bool Read(std::size_t bytes, DataType& out)
noexcept override;
163 std::reference_wrapper<ReadOnly> m_buffer;
216 virtual
bool Write(DataType&& in) noexcept = 0;
267 inline PointerType Clone() const noexcept
override {
268 return MakePointer<ExternalBufferWriter>(*
this);
275 inline PointerType
Move() noexcept
override {
276 return MakePointer<ExternalBufferWriter>(std::move(*
this));
284 bool Write(DataType&& in)
noexcept override;
287 std::reference_wrapper<WriteOnly> m_buffer;
Implementation of ExternalReader that reads from a ReadOnly buffer.
Definition external.hxx:86
PointerType Move() noexcept override
Move this ExternalBufferReader.
Definition external.hxx:142
~ExternalBufferReader() noexcept=default
Destructor.
ExternalBufferReader(const ExternalBufferReader &other)=default
Copy constructor (deleted).
ExternalBufferReader(ExternalBufferReader &&other) noexcept=default
Move constructor.
ExternalBufferReader(ReadOnly &buffer) noexcept
Construct ExternalBufferReader with a ReadOnly buffer.
Definition external.hxx:96
bool Read(std::size_t bytes, DataType &out) const noexcept override
Read data into the provided buffer.
bool Read(std::size_t bytes, DataType &out) noexcept override
Destructively read data into the provided buffer.
Definition external.hxx:219
PointerType Move() noexcept override
Move this ExternalBufferWriter.
Definition external.hxx:275
ExternalBufferWriter(WriteOnly &buffer) noexcept
Construct ExternalBufferWriter with a WriteOnly buffer.
Definition external.hxx:229
ExternalBufferWriter(const ExternalBufferWriter &other)=default
Copy constructor (deleted).
ExternalBufferWriter(ExternalBufferWriter &&other) noexcept=default
Move constructor.
~ExternalBufferWriter() noexcept=default
Destructor.
bool Write(DataType &&in) noexcept override
Move data from the provided buffer.
Interface for reading data from an external source.
Definition external.hxx:26
ExternalReader() noexcept=default
Construct ExternalReader.
Interface for writing data to an external source.
Definition external.hxx:174
ExternalWriter() noexcept=default
Construct ExternalWriter.
Generic class providing a buffer that can be read but not written to.
Definition generic.hxx:146
Generic class providing a buffer that can be written to but not read from.
Definition generic.hxx:408