From 6c554162b307ba06102038f62113f5c336eab8a1 Mon Sep 17 00:00:00 2001 From: Brick Date: Fri, 19 Oct 2018 12:21:16 +0100 Subject: Added move constructor/assignment operator to DataBuffer --- databuffer.cpp | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'databuffer.cpp') 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() { -- cgit v1.3.1