mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 03:28:20 +02:00
Initial checkin
This commit is contained in:
parent
c74712dad9
commit
078564ac9e
3242 changed files with 1616395 additions and 0 deletions
155
BeefySysLib/MemStream.cpp
Normal file
155
BeefySysLib/MemStream.cpp
Normal file
|
@ -0,0 +1,155 @@
|
|||
#include "MemStream.h"
|
||||
|
||||
USING_NS_BF;
|
||||
|
||||
MemStream* MemStream::CreateWithDuplicate(void* data, int size)
|
||||
{
|
||||
uint8* newData = new uint8[size];
|
||||
memcpy(newData, data, size);
|
||||
MemStream* memStream = new MemStream(newData, size, true);
|
||||
return memStream;
|
||||
}
|
||||
|
||||
MemStream* MemStream::CreateWithOwnershipTaken(void* data, int size)
|
||||
{
|
||||
return new MemStream(data, size, true);
|
||||
}
|
||||
|
||||
MemStream* MemStream::CreateWithNoCopy(void* data, int size)
|
||||
{
|
||||
return new MemStream(data, size, false);
|
||||
}
|
||||
|
||||
MemStream::MemStream(void* data, int size, bool freeMemory)
|
||||
{
|
||||
mData = (uint8*) data;
|
||||
mSize = size;
|
||||
mPos = 0;
|
||||
mFreeMemory = freeMemory;
|
||||
}
|
||||
|
||||
MemStream::~MemStream()
|
||||
{
|
||||
if (mFreeMemory)
|
||||
delete mData;
|
||||
}
|
||||
|
||||
bool MemStream::Eof()
|
||||
{
|
||||
return mPos >= mSize;
|
||||
}
|
||||
|
||||
int MemStream::GetSize()
|
||||
{
|
||||
return mSize;
|
||||
}
|
||||
|
||||
void MemStream::Read(void* ptr, int size)
|
||||
{
|
||||
memcpy(ptr, mData + mPos, size);
|
||||
mPos += size;
|
||||
}
|
||||
|
||||
|
||||
void Beefy::MemStream::Write(void* ptr, int size)
|
||||
{
|
||||
memcpy(mData + mPos, ptr, size);
|
||||
mPos += size;
|
||||
}
|
||||
|
||||
int MemStream::GetPos()
|
||||
{
|
||||
return mPos;
|
||||
}
|
||||
|
||||
void MemStream::Seek(int size)
|
||||
{
|
||||
mPos += size;
|
||||
}
|
||||
|
||||
void MemStream::SetPos(int pos)
|
||||
{
|
||||
mPos = pos;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
SafeMemStream::SafeMemStream(void* data, int size, bool freeMemory) : MemStream(data, size, freeMemory)
|
||||
{
|
||||
mFailed = false;
|
||||
}
|
||||
|
||||
void SafeMemStream::Read(void* ptr, int size)
|
||||
{
|
||||
if (mPos + size > mSize)
|
||||
{
|
||||
mFailed = true;
|
||||
memset(ptr, 0, size);
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(ptr, mData + mPos, size);
|
||||
}
|
||||
mPos += size;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
DynMemStream::DynMemStream()
|
||||
{
|
||||
mPos = 0;
|
||||
}
|
||||
|
||||
bool DynMemStream::Eof()
|
||||
{
|
||||
return mPos >= (int)mData.size();
|
||||
}
|
||||
|
||||
int DynMemStream::GetSize()
|
||||
{
|
||||
return (int)mData.size();
|
||||
}
|
||||
|
||||
void DynMemStream::Read(void* ptr, int size)
|
||||
{
|
||||
memcpy(ptr, (uint8*)&mData.front() + mPos, size);
|
||||
mPos += size;
|
||||
}
|
||||
|
||||
void DynMemStream::Write(void* ptr, int size)
|
||||
{
|
||||
mData.Insert(mPos, (uint8*)ptr, size);
|
||||
mPos += size;
|
||||
}
|
||||
|
||||
void DynMemStream::Write(uint8 val)
|
||||
{
|
||||
mData.push_back(val);
|
||||
mPos++;
|
||||
}
|
||||
|
||||
int DynMemStream::GetPos()
|
||||
{
|
||||
return mPos;
|
||||
}
|
||||
|
||||
void DynMemStream::Seek(int size)
|
||||
{
|
||||
mPos += size;
|
||||
}
|
||||
|
||||
void DynMemStream::SetPos(int pos)
|
||||
{
|
||||
mPos = pos;
|
||||
}
|
||||
|
||||
void DynMemStream::Clear()
|
||||
{
|
||||
mPos = 0;
|
||||
mData.Clear();
|
||||
}
|
||||
|
||||
void* DynMemStream::GetPtr()
|
||||
{
|
||||
return &mData[0];
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue