cleaning up file / memory streams

This commit is contained in:
Noel Berry
2021-05-09 19:30:01 -07:00
parent 2447490033
commit c51d397ccc
8 changed files with 166 additions and 64 deletions

View File

@ -3,6 +3,8 @@
namespace Blah
{
// Buffer Stream reads and writes to an internal buffer.
// It will grow the capacity if it needs to while writing.
class BufferStream : public Stream
{
public:
@ -12,23 +14,23 @@ namespace Blah
BufferStream& operator=(BufferStream&& bs) noexcept;
~BufferStream();
virtual size_t length() const override { return m_length; }
virtual size_t position() const override { return m_position; }
virtual size_t seek(size_t seekTo) override { return m_position = (seekTo < 0 ? 0 : (seekTo > m_length ? m_length : seekTo)); }
virtual bool is_open() const override { return m_buffer != nullptr; }
virtual bool is_readable() const override { return true; }
virtual bool is_writable() const override { return true; }
virtual void close() override;
size_t length() const override;
size_t position() const override;
size_t seek(size_t seekTo) override;
bool is_open() const override;
bool is_readable() const override;
bool is_writable() const override;
void close() override;
void resize(size_t length);
void clear() { m_length = m_position = 0; }
void clear();
char* data() { return m_buffer; }
const char* data() const { return m_buffer; }
char* data();
const char* data() const;
protected:
virtual size_t read_into(void* ptr, size_t length) override;
virtual size_t write_from(const void* ptr, size_t length) override;
size_t read_data(void* ptr, size_t length) override;
size_t write_data(const void* ptr, size_t length) override;
private:
char* m_buffer;

View File

@ -21,8 +21,8 @@ namespace Blah
void close() override;
protected:
size_t read_into(void* ptr, size_t length) override;
size_t write_from(const void* ptr, size_t length) override;
size_t read_data(void* ptr, size_t length) override;
size_t write_data(const void* ptr, size_t length) override;
private:
FileMode m_mode;

View File

@ -3,6 +3,8 @@
namespace Blah
{
// Memory Stream moves over an existing buffer.
// The Buffer must exist for the duration of the Memory Stream.
class MemoryStream : public Stream
{
public:
@ -12,20 +14,20 @@ namespace Blah
MemoryStream& operator=(MemoryStream&& ms) noexcept;
~MemoryStream() override { m_data = nullptr; m_length = m_position = 0; }
size_t length() const override { return m_length; }
size_t position() const override { return m_position; }
size_t seek(size_t seekTo) override { return m_position = (seekTo < 0 ? 0 : (seekTo > m_length ? m_length : seekTo)); }
bool is_open() const override { return m_data != nullptr; }
bool is_readable() const override { return true; }
bool is_writable() const override { return true; }
void close() override { m_data = nullptr; m_length = m_position = 0; }
size_t length() const override;
size_t position() const override;
size_t seek(size_t seekTo) override;
bool is_open() const override;
bool is_readable() const override;
bool is_writable() const override;
void close() override;
char* data() { return m_data; }
const char* data() const { return m_data; }
char* data();
const char* data() const;
protected:
size_t read_into(void* ptr, size_t length) override;
size_t write_from(const void* ptr, size_t length) override;
size_t read_data(void* ptr, size_t length) override;
size_t write_data(const void* ptr, size_t length) override;
private:
char* m_data;

View File

@ -40,7 +40,7 @@ namespace Blah
size_t pipe(Stream& to, size_t length);
// reads the amount of bytes into the given buffer, and returns the amount read
size_t read(void* buffer, size_t length) { return read_into(buffer, length); }
size_t read(void* buffer, size_t length);
// reads a string. if length < 0, assumes null-terminated
String read_string(int length = -1);
@ -92,10 +92,10 @@ namespace Blah
}
protected:
// reads from the stream into the given buffer, and returns the number of bytes read
virtual size_t read_into(void* buffer, size_t length) = 0;
// reads the amount of bytes into the given buffer, and returns the amount read
virtual size_t read_data(void* buffer, size_t length) = 0;
// writes from the stream from the given buffer, and returns the number of bytes written
virtual size_t write_from(const void* buffer, size_t length) = 0;
// writes the amount of bytes to the stream from the given buffer, and returns the amount written
virtual size_t write_data(const void* buffer, size_t length) = 0;
};
}