mirror of
https://github.com/elasota/Aerofoil.git
synced 2025-09-23 14:53:52 +00:00
Add memory buffer stream
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
#include "MemReaderStream.h"
|
||||
#include "MemoryManager.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
@@ -11,6 +12,10 @@ namespace PortabilityLayer
|
||||
{
|
||||
}
|
||||
|
||||
MemReaderStream::~MemReaderStream()
|
||||
{
|
||||
}
|
||||
|
||||
size_t MemReaderStream::Read(void *bytesOut, size_t size)
|
||||
{
|
||||
size_t available = m_size - m_loc;
|
||||
@@ -111,4 +116,32 @@ namespace PortabilityLayer
|
||||
void MemReaderStream::Flush()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
MemBufferReaderStream::~MemBufferReaderStream()
|
||||
{
|
||||
if (m_buffer)
|
||||
MemoryManager::GetInstance()->Release(m_buffer);
|
||||
}
|
||||
|
||||
MemBufferReaderStream *MemBufferReaderStream::Create(void *buffer, size_t size)
|
||||
{
|
||||
void *storage = MemoryManager::GetInstance()->Alloc(sizeof(MemBufferReaderStream));
|
||||
if (!storage)
|
||||
return nullptr;
|
||||
|
||||
return new (storage) MemBufferReaderStream(buffer, size);
|
||||
}
|
||||
|
||||
void MemBufferReaderStream::Close()
|
||||
{
|
||||
this->~MemBufferReaderStream();
|
||||
MemoryManager::GetInstance()->Release(this);
|
||||
}
|
||||
|
||||
MemBufferReaderStream::MemBufferReaderStream(void *buffer, size_t size)
|
||||
: MemReaderStream(buffer, size)
|
||||
, m_buffer(buffer)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
@@ -7,10 +7,11 @@
|
||||
|
||||
namespace PortabilityLayer
|
||||
{
|
||||
class MemReaderStream final : public GpIOStream
|
||||
class MemReaderStream : public GpIOStream
|
||||
{
|
||||
public:
|
||||
MemReaderStream(const void *memStream, size_t size);
|
||||
virtual ~MemReaderStream();
|
||||
|
||||
size_t Read(void *bytesOut, size_t size) override;
|
||||
size_t Write(const void *bytes, size_t size) override;
|
||||
@@ -33,6 +34,22 @@ namespace PortabilityLayer
|
||||
size_t m_size;
|
||||
size_t m_loc;
|
||||
};
|
||||
|
||||
class MemBufferReaderStream final : public MemReaderStream
|
||||
{
|
||||
public:
|
||||
~MemBufferReaderStream() override;
|
||||
|
||||
static MemBufferReaderStream *Create(void *buffer, size_t size);
|
||||
|
||||
void Close() override;
|
||||
|
||||
private:
|
||||
MemBufferReaderStream() GP_DELETED;
|
||||
MemBufferReaderStream(void *buffer, size_t size);
|
||||
|
||||
void *m_buffer;
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user