mirror of
https://github.com/NoelFB/blah.git
synced 2025-06-29 19:25:26 +08:00
cleaning up file / memory streams
This commit is contained in:
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user