streamline the buffer readers.
This commit is contained in:
parent
235d36fe69
commit
78a71bb662
5 changed files with 30 additions and 46 deletions
|
|
@ -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
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue