diff options
Diffstat (limited to 'include/cru/common/io/MemoryStream.h')
-rw-r--r-- | include/cru/common/io/MemoryStream.h | 34 |
1 files changed, 13 insertions, 21 deletions
diff --git a/include/cru/common/io/MemoryStream.h b/include/cru/common/io/MemoryStream.h index a6243d67..a1f90c3b 100644 --- a/include/cru/common/io/MemoryStream.h +++ b/include/cru/common/io/MemoryStream.h @@ -7,38 +7,30 @@ namespace cru::io { class CRU_BASE_API MemoryStream : public Stream { public: - MemoryStream() = default; MemoryStream( std::byte* buffer, Index size, bool read_only = false, - std::function<void(std::byte* buffer, Index size)> release_func = {}) - : buffer_(buffer), - size_(size), - read_only_(read_only), - release_func_(std::move(release_func)) {} - - CRU_DELETE_COPY(MemoryStream) - CRU_DELETE_MOVE(MemoryStream) + std::function<void(std::byte* buffer, Index size)> release_func = {}); ~MemoryStream() override; public: - bool CanSeek() override; - Index Seek(Index offset, SeekOrigin origin = SeekOrigin::Current) override; + void Close() override; - bool CanRead() override; - Index Read(std::byte* buffer, Index offset, Index size) override; + std::byte* GetBuffer() const { return buffer_; } - bool CanWrite() override; - Index Write(const std::byte* buffer, Index offset, Index size) override; + protected: + Index DoSeek(Index offset, SeekOrigin origin) override; + Index DoGetSize() override { return size_; } + Index DoRead(std::byte* buffer, Index offset, Index size) override; + Index DoWrite(const std::byte* buffer, Index offset, Index size) override; - std::byte* GetBuffer() const { return buffer_; } - Index GetSize() override { return size_; } + private: + void DoClose(); private: - std::byte* buffer_ = nullptr; - Index size_ = 0; - Index position_ = 0; - bool read_only_ = false; + std::byte* buffer_; + Index size_; + Index position_; std::function<void(std::byte* buffer, Index size)> release_func_; }; } // namespace cru::io |