59 lines
1.1 KiB
C++
59 lines
1.1 KiB
C++
|
#include "IBufferStream.h"
|
||
|
|
||
|
IBufferStream::IBufferStream()
|
||
|
:streamBuf(NULL), flags(0)
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
IBufferStream::IBufferStream(const IBufferStream & rhs)
|
||
|
{
|
||
|
// explicitly not supporting copy constructor for self-owned buffers
|
||
|
ASSERT((flags & kFlag_OwnedBuf) == 0);
|
||
|
}
|
||
|
|
||
|
IBufferStream::IBufferStream(void * buf, UInt64 inLength)
|
||
|
:streamBuf(NULL), flags(0)
|
||
|
{
|
||
|
SetBuffer(buf, inLength);
|
||
|
}
|
||
|
|
||
|
IBufferStream::~IBufferStream()
|
||
|
{
|
||
|
if(flags & kFlag_OwnedBuf)
|
||
|
{
|
||
|
delete [] streamBuf;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
IBufferStream & IBufferStream::operator=(IBufferStream & rhs)
|
||
|
{
|
||
|
// explicitly not supporting copying for self-owned buffers
|
||
|
ASSERT((flags & kFlag_OwnedBuf) == 0);
|
||
|
|
||
|
streamBuf = rhs.streamBuf;
|
||
|
flags = rhs.flags;
|
||
|
|
||
|
return *this;
|
||
|
}
|
||
|
|
||
|
void IBufferStream::SetBuffer(void * buf, UInt64 inLength)
|
||
|
{
|
||
|
streamBuf = (UInt8 *)buf;
|
||
|
streamLength = inLength;
|
||
|
|
||
|
Rewind();
|
||
|
}
|
||
|
|
||
|
void IBufferStream::ReadBuf(void * buf, UInt32 inLength)
|
||
|
{
|
||
|
memcpy(buf, &streamBuf[streamOffset], inLength);
|
||
|
streamOffset += inLength;
|
||
|
}
|
||
|
|
||
|
void IBufferStream::WriteBuf(const void * buf, UInt32 inLength)
|
||
|
{
|
||
|
memcpy(&streamBuf[streamOffset], buf, inLength);
|
||
|
streamOffset += inLength;
|
||
|
}
|