From 56dfbcd73529ee6dc42a17a139c9ceaccf1def3d Mon Sep 17 00:00:00 2001 From: "Matthias P. Braendli" Date: Tue, 6 Mar 2018 22:53:36 +0100 Subject: Avoid copies in ThreadsafeQueue and Buffer --- src/Buffer.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/Buffer.cpp') diff --git a/src/Buffer.cpp b/src/Buffer.cpp index e96b8d6..002c1eb 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -77,6 +77,12 @@ Buffer::~Buffer() } } +void Buffer::swap(Buffer& other) +{ + std::swap(m_len, other.m_len); + std::swap(m_capacity, other.m_capacity); + std::swap(m_data, other.m_data); +} Buffer& Buffer::operator=(const Buffer& other) { @@ -142,6 +148,13 @@ void Buffer::setData(const void *data, size_t len) appendData(data, len); } +uint8_t Buffer::operator[](size_t i) const +{ + if (i >= m_len) { + throw std::out_of_range("index out of range"); + } + return reinterpret_cast(m_data)[i]; +} void Buffer::appendData(const void *data, size_t len) { @@ -153,3 +166,8 @@ void Buffer::appendData(const void *data, size_t len) } } +void swap(Buffer& buf1, Buffer& buf2) +{ + buf1.swap(buf2); +} + -- cgit v1.2.3