Core/MemoryStream: Add default constructor and getters
Former-commit-id: dde0bbc7e697512d94275a807e18299eb271197e
This commit is contained in:
parent
1c8a09f90c
commit
11f85ab9bb
|
|
@ -8,24 +8,29 @@
|
||||||
#define NAZARA_MEMORYSTREAM_HPP
|
#define NAZARA_MEMORYSTREAM_HPP
|
||||||
|
|
||||||
#include <Nazara/Prerequesites.hpp>
|
#include <Nazara/Prerequesites.hpp>
|
||||||
|
#include <Nazara/Core/ByteArray.hpp>
|
||||||
#include <Nazara/Core/InputStream.hpp>
|
#include <Nazara/Core/InputStream.hpp>
|
||||||
#include <Nazara/Core/OutputStream.hpp>
|
#include <Nazara/Core/OutputStream.hpp>
|
||||||
#include <vector>
|
|
||||||
|
|
||||||
namespace Nz
|
namespace Nz
|
||||||
{
|
{
|
||||||
class NAZARA_CORE_API MemoryStream : public InputStream, public OutputStream
|
class NAZARA_CORE_API MemoryStream : public InputStream, public OutputStream
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
MemoryStream();
|
||||||
MemoryStream(const void* ptr, unsigned int size);
|
MemoryStream(const void* ptr, unsigned int size);
|
||||||
MemoryStream(const MemoryStream&) = default;
|
MemoryStream(const MemoryStream&) = default;
|
||||||
MemoryStream(MemoryStream&&) = default;
|
MemoryStream(MemoryStream&&) = default;
|
||||||
~MemoryStream() = default;
|
~MemoryStream() = default;
|
||||||
|
|
||||||
|
void Clear();
|
||||||
|
|
||||||
bool EndOfStream() const override;
|
bool EndOfStream() const override;
|
||||||
|
|
||||||
void Flush() override;
|
void Flush() override;
|
||||||
|
|
||||||
|
const ByteArray& GetBuffer() const;
|
||||||
|
const UInt8* GetData() const;
|
||||||
UInt64 GetCursorPos() const override;
|
UInt64 GetCursorPos() const override;
|
||||||
UInt64 GetSize() const override;
|
UInt64 GetSize() const override;
|
||||||
|
|
||||||
|
|
@ -39,7 +44,7 @@ namespace Nz
|
||||||
MemoryStream& operator=(MemoryStream&&) = default;
|
MemoryStream& operator=(MemoryStream&&) = default;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<UInt8> m_buffer;
|
ByteArray m_buffer;
|
||||||
UInt64 m_pos;
|
UInt64 m_pos;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,12 +9,23 @@
|
||||||
|
|
||||||
namespace Nz
|
namespace Nz
|
||||||
{
|
{
|
||||||
MemoryStream::MemoryStream(const void* ptr, unsigned int size) :
|
MemoryStream::MemoryStream() :
|
||||||
Stream(OpenMode_ReadWrite),
|
Stream(OpenMode_ReadWrite),
|
||||||
m_pos(0)
|
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
|
bool MemoryStream::EndOfStream() const
|
||||||
|
|
@ -27,11 +38,21 @@ namespace Nz
|
||||||
// Nothing to flush
|
// Nothing to flush
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const ByteArray& MemoryStream::GetBuffer() const
|
||||||
|
{
|
||||||
|
return m_buffer;
|
||||||
|
}
|
||||||
|
|
||||||
UInt64 MemoryStream::GetCursorPos() const
|
UInt64 MemoryStream::GetCursorPos() const
|
||||||
{
|
{
|
||||||
return m_pos;
|
return m_pos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const UInt8* MemoryStream::GetData() const
|
||||||
|
{
|
||||||
|
return m_buffer.GetConstBuffer();
|
||||||
|
}
|
||||||
|
|
||||||
UInt64 MemoryStream::GetSize() const
|
UInt64 MemoryStream::GetSize() const
|
||||||
{
|
{
|
||||||
return m_buffer.size();
|
return m_buffer.size();
|
||||||
|
|
@ -42,7 +63,7 @@ namespace Nz
|
||||||
std::size_t readSize = std::min<std::size_t>(size, static_cast<std::size_t>(m_buffer.size() - m_pos));
|
std::size_t readSize = std::min<std::size_t>(size, static_cast<std::size_t>(m_buffer.size() - m_pos));
|
||||||
|
|
||||||
if (buffer)
|
if (buffer)
|
||||||
std::memcpy(buffer, m_buffer.data() + m_pos, readSize);
|
std::memcpy(buffer, m_buffer.GetBuffer() + m_pos, readSize);
|
||||||
|
|
||||||
m_pos += readSize;
|
m_pos += readSize;
|
||||||
return readSize;
|
return readSize;
|
||||||
|
|
@ -59,9 +80,9 @@ namespace Nz
|
||||||
{
|
{
|
||||||
std::size_t endPos = static_cast<std::size_t>(m_pos + size);
|
std::size_t endPos = static_cast<std::size_t>(m_pos + size);
|
||||||
if (endPos > m_buffer.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;
|
m_pos = endPos;
|
||||||
return size;
|
return size;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue