summaryrefslogtreecommitdiff
path: root/databuffer.cpp
diff options
context:
space:
mode:
authorBrick <samuelwilde@hotmail.com>2018-10-19 12:21:16 +0100
committerBrick <samuelwilde@hotmail.com>2018-10-19 12:21:16 +0100
commit6c554162b307ba06102038f62113f5c336eab8a1 (patch)
tree22fc40d8f301f4ead63f93cb49be12e906de7315 /databuffer.cpp
parentf556db4ee172437ba3177e13065cb19f01cddc2f (diff)
Added move constructor/assignment operator to DataBuffer
Diffstat (limited to 'databuffer.cpp')
-rw-r--r--databuffer.cpp25
1 files changed, 23 insertions, 2 deletions
diff --git a/databuffer.cpp b/databuffer.cpp
index f2031842..92709572 100644
--- a/databuffer.cpp
+++ b/databuffer.cpp
@@ -47,6 +47,11 @@ DataBuffer::DataBuffer(const DataBuffer& buf)
m_buffer = BNDuplicateDataBuffer(buf.m_buffer);
}
+DataBuffer::DataBuffer(DataBuffer&& buf)
+{
+ m_buffer = buf.m_buffer;
+ buf.m_buffer = BNCreateDataBuffer(nullptr, 0);
+}
DataBuffer::DataBuffer(BNDataBuffer* buf)
{
@@ -62,11 +67,27 @@ DataBuffer::~DataBuffer()
DataBuffer& DataBuffer::operator=(const DataBuffer& buf)
{
- BNFreeDataBuffer(m_buffer);
- m_buffer = BNDuplicateDataBuffer(buf.m_buffer);
+ if (this != &buf)
+ {
+ BNFreeDataBuffer(m_buffer);
+ m_buffer = BNDuplicateDataBuffer(buf.m_buffer);
+ }
+
return *this;
}
+DataBuffer& DataBuffer::operator=(DataBuffer&& buf)
+{
+ if (this != &buf)
+ {
+ BNClearDataBuffer(m_buffer);
+ BNDataBuffer* temp = m_buffer;
+ m_buffer = buf.m_buffer;
+ buf.m_buffer = temp;
+ }
+
+ return *this;
+}
void* DataBuffer::GetData()
{