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 "MemReaderStream.h"
|
||||||
|
#include "MemoryManager.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
@@ -9,6 +10,10 @@ namespace PortabilityLayer
|
|||||||
, m_size(size)
|
, m_size(size)
|
||||||
, m_loc(0)
|
, m_loc(0)
|
||||||
{
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
MemReaderStream::~MemReaderStream()
|
||||||
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t MemReaderStream::Read(void *bytesOut, size_t size)
|
size_t MemReaderStream::Read(void *bytesOut, size_t size)
|
||||||
@@ -110,5 +115,33 @@ namespace PortabilityLayer
|
|||||||
|
|
||||||
void MemReaderStream::Flush()
|
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
|
namespace PortabilityLayer
|
||||||
{
|
{
|
||||||
class MemReaderStream final : public GpIOStream
|
class MemReaderStream : public GpIOStream
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MemReaderStream(const void *memStream, size_t size);
|
MemReaderStream(const void *memStream, size_t size);
|
||||||
|
virtual ~MemReaderStream();
|
||||||
|
|
||||||
size_t Read(void *bytesOut, size_t size) override;
|
size_t Read(void *bytesOut, size_t size) override;
|
||||||
size_t Write(const void *bytes, size_t size) override;
|
size_t Write(const void *bytes, size_t size) override;
|
||||||
@@ -32,6 +33,22 @@ namespace PortabilityLayer
|
|||||||
const uint8_t *m_bytes;
|
const uint8_t *m_bytes;
|
||||||
size_t m_size;
|
size_t m_size;
|
||||||
size_t m_loc;
|
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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user