streamline the buffer readers.

This commit is contained in:
Christoph Oelckers 2023-12-13 18:17:12 +01:00
commit 78a71bb662
5 changed files with 30 additions and 46 deletions

View file

@ -31,7 +31,7 @@ public:
class BufferingReader : public MemoryReader
{
std::vector<uint8_t> buf;
FileData buf;
std::unique_ptr<FileReaderInterface> baseReader;
ptrdiff_t bufferpos = 0;
@ -41,7 +41,7 @@ public:
: baseReader(base)
{
Length = base->Length;
buf.resize(Length);
buf.allocate(Length);
bufptr = (const char*)buf.data();
}
@ -58,10 +58,9 @@ public:
//
//==========================================================================
template<class T>
class MemoryArrayReader : public MemoryReader
{
T buf;
FileData buf;
public:
MemoryArrayReader()
@ -70,24 +69,18 @@ public:
Length = 0;
}
MemoryArrayReader(const char* buffer, ptrdiff_t length)
MemoryArrayReader(size_t len)
{
if (length > 0)
{
buf.resize(length);
memcpy(&buf[0], buffer, length);
}
buf.allocate(len);
UpdateBuffer();
}
MemoryArrayReader(T& buffer)
MemoryArrayReader(FileData& buffer)
{
buf = std::move(buffer);
UpdateBuffer();
}
T& GetArray() { return buf; }
void UpdateBuffer()
{
bufptr = (const char*)buf.data();
@ -96,7 +89,4 @@ public:
}
};
bool OpenMemoryArray(std::vector<uint8_t>& data); // take the given array
}