diff options
| author | Jordan <jordan@psifertex.com> | 2018-10-19 09:35:48 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-10-19 09:35:48 -0400 |
| commit | 8de8bad6f2f5517d858568a9871dd99f7e8d5d4b (patch) | |
| tree | 8f1b3e311726a323e43c427ef35014d9d8017acf /databuffer.cpp | |
| parent | 5bd473ce9f0bf37eb33ea0376fd843c585060d4f (diff) | |
| parent | 6c554162b307ba06102038f62113f5c336eab8a1 (diff) | |
Merge pull request #1172 from DatBrick/databuffer_perf
Added move constructor/assignment operator to DataBuffer
Diffstat (limited to 'databuffer.cpp')
| -rw-r--r-- | databuffer.cpp | 25 |
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() { |
