Modified BDataBuffer's copy constructor to let the user specify whether to create a copy of the buffer or just a reference. Also changed all void* params to be const.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8888 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -25,8 +25,8 @@ class BDataBuffer
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
BDataBuffer(size_t len);
|
BDataBuffer(size_t len);
|
||||||
BDataBuffer(void* data, size_t len, bool copy = false);
|
BDataBuffer(const void* data, size_t len, bool copy = false);
|
||||||
BDataBuffer(const BDataBuffer& rhs);
|
BDataBuffer(const BDataBuffer& rhs, bool copy = false);
|
||||||
~BDataBuffer();
|
~BDataBuffer();
|
||||||
|
|
||||||
BDataBuffer& operator=(const BDataBuffer& rhs);
|
BDataBuffer& operator=(const BDataBuffer& rhs);
|
||||||
@@ -45,12 +45,12 @@ class BDataBuffer
|
|||||||
size_t Size() const { return fSize; }
|
size_t Size() const { return fSize; }
|
||||||
int32 Count() { return fCount; }
|
int32 Count() { return fCount; }
|
||||||
|
|
||||||
static void Create(void* data, size_t len, BDataReference*& ref,
|
static void Create(const void* data, size_t len,
|
||||||
bool copy = false);
|
BDataReference*& ref, bool copy = false);
|
||||||
static void Create(size_t len, BDataReference*& ref);
|
static void Create(size_t len, BDataReference*& ref);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BDataReference(void* data, size_t len, bool copy = false);
|
BDataReference(const void* data, size_t len, bool copy = false);
|
||||||
BDataReference(size_t len);
|
BDataReference(size_t len);
|
||||||
~BDataReference();
|
~BDataReference();
|
||||||
|
|
||||||
|
|||||||
@@ -49,14 +49,25 @@ BDataBuffer::BDataBuffer(size_t len)
|
|||||||
BDataReference::Create(len, fDataRef);
|
BDataReference::Create(len, fDataRef);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
BDataBuffer::BDataBuffer(void* data, size_t len, bool copy)
|
BDataBuffer::BDataBuffer(const void* data, size_t len, bool copy)
|
||||||
{
|
{
|
||||||
BDataReference::Create(data, len, fDataRef, copy);
|
BDataReference::Create(data, len, fDataRef, copy);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
BDataBuffer::BDataBuffer(const BDataBuffer& rhs)
|
BDataBuffer::BDataBuffer(const BDataBuffer& rhs, bool copy)
|
||||||
{
|
{
|
||||||
*this = rhs;
|
if (this != &rhs)
|
||||||
|
{
|
||||||
|
if (copy)
|
||||||
|
{
|
||||||
|
BDataReference::Create(rhs.Buffer(), rhs.BufferSize(),
|
||||||
|
fDataRef, copy);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rhs.fDataRef->Acquire(fDataRef);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
BDataBuffer::~BDataBuffer()
|
BDataBuffer::~BDataBuffer()
|
||||||
@@ -90,7 +101,7 @@ const void* BDataBuffer::Buffer() const
|
|||||||
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
void BDataBuffer::BDataReference::Create(void* data, size_t len,
|
void BDataBuffer::BDataReference::Create(const void* data, size_t len,
|
||||||
BDataReference*& ref, bool copy)
|
BDataReference*& ref, bool copy)
|
||||||
{
|
{
|
||||||
BDataReference* temp = new BDataReference(data, len, copy);
|
BDataReference* temp = new BDataReference(data, len, copy);
|
||||||
@@ -119,7 +130,8 @@ void BDataBuffer::BDataReference::Release(BDataReference*& ref)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
BDataBuffer::BDataReference::BDataReference(void* data, size_t len, bool copy)
|
BDataBuffer::BDataReference::BDataReference(const void* data, size_t len,
|
||||||
|
bool copy)
|
||||||
: fData(NULL), fSize(len), fCount(0)
|
: fData(NULL), fSize(len), fCount(0)
|
||||||
{
|
{
|
||||||
if (copy)
|
if (copy)
|
||||||
|
|||||||
Reference in New Issue
Block a user