From 11f85ab9bb26c498376a780f39ffd1c30a7e3e97 Mon Sep 17 00:00:00 2001 From: Lynix Date: Thu, 19 Nov 2015 13:57:39 +0100 Subject: [PATCH] Core/MemoryStream: Add default constructor and getters Former-commit-id: dde0bbc7e697512d94275a807e18299eb271197e --- include/Nazara/Core/MemoryStream.hpp | 9 ++++++-- src/Nazara/Core/MemoryStream.cpp | 33 +++++++++++++++++++++++----- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/include/Nazara/Core/MemoryStream.hpp b/include/Nazara/Core/MemoryStream.hpp index 30c2fa58a..465abf745 100644 --- a/include/Nazara/Core/MemoryStream.hpp +++ b/include/Nazara/Core/MemoryStream.hpp @@ -8,24 +8,29 @@ #define NAZARA_MEMORYSTREAM_HPP #include +#include #include #include -#include namespace Nz { class NAZARA_CORE_API MemoryStream : public InputStream, public OutputStream { public: + MemoryStream(); MemoryStream(const void* ptr, unsigned int size); MemoryStream(const MemoryStream&) = default; MemoryStream(MemoryStream&&) = default; ~MemoryStream() = default; + void Clear(); + bool EndOfStream() const override; void Flush() override; + const ByteArray& GetBuffer() const; + const UInt8* GetData() const; UInt64 GetCursorPos() const override; UInt64 GetSize() const override; @@ -39,7 +44,7 @@ namespace Nz MemoryStream& operator=(MemoryStream&&) = default; private: - std::vector m_buffer; + ByteArray m_buffer; UInt64 m_pos; }; } diff --git a/src/Nazara/Core/MemoryStream.cpp b/src/Nazara/Core/MemoryStream.cpp index 99aa04b26..0bd11573b 100644 --- a/src/Nazara/Core/MemoryStream.cpp +++ b/src/Nazara/Core/MemoryStream.cpp @@ -9,12 +9,23 @@ namespace Nz { - MemoryStream::MemoryStream(const void* ptr, unsigned int size) : + MemoryStream::MemoryStream() : Stream(OpenMode_ReadWrite), m_pos(0) { - m_buffer.resize(size); - std::memcpy(m_buffer.data(), ptr, size); + } + + MemoryStream::MemoryStream(const void* ptr, unsigned int size) : + MemoryStream() + { + m_buffer.Resize(size); + std::memcpy(m_buffer.GetBuffer(), ptr, size); + } + + void MemoryStream::Clear() + { + m_buffer.Clear(); + m_pos = 0; } bool MemoryStream::EndOfStream() const @@ -27,11 +38,21 @@ namespace Nz // Nothing to flush } + const ByteArray& MemoryStream::GetBuffer() const + { + return m_buffer; + } + UInt64 MemoryStream::GetCursorPos() const { return m_pos; } + const UInt8* MemoryStream::GetData() const + { + return m_buffer.GetConstBuffer(); + } + UInt64 MemoryStream::GetSize() const { return m_buffer.size(); @@ -42,7 +63,7 @@ namespace Nz std::size_t readSize = std::min(size, static_cast(m_buffer.size() - m_pos)); if (buffer) - std::memcpy(buffer, m_buffer.data() + m_pos, readSize); + std::memcpy(buffer, m_buffer.GetBuffer() + m_pos, readSize); m_pos += readSize; return readSize; @@ -59,9 +80,9 @@ namespace Nz { std::size_t endPos = static_cast(m_pos + size); if (endPos > m_buffer.size()) - m_buffer.resize(endPos); + m_buffer.Resize(endPos); - std::memcpy(m_buffer.data(), buffer, size); + std::memcpy(m_buffer.GetBuffer(), buffer, size); m_pos = endPos; return size;