diff --git a/AnnService/inc/Core/CommonDataStructure.h b/AnnService/inc/Core/CommonDataStructure.h index 74d7980f4..e03702350 100644 --- a/AnnService/inc/Core/CommonDataStructure.h +++ b/AnnService/inc/Core/CommonDataStructure.h @@ -12,35 +12,42 @@ namespace SPTAG class ByteArray { public: - ByteArray(); + const static ByteArray c_empty; - ByteArray(ByteArray&& p_right); + static ByteArray Alloc(std::size_t p_length); - ByteArray(std::uint8_t* p_array, std::size_t p_length, bool p_transferOnwership); + ByteArray() noexcept; - ByteArray(std::uint8_t* p_array, std::size_t p_length, std::shared_ptr p_dataHolder); + ByteArray(ByteArray&& p_right) noexcept; - ByteArray(const ByteArray& p_right); + ByteArray(std::uint8_t* p_array, std::size_t p_length, bool p_transferOnwership); - ByteArray& operator= (const ByteArray& p_right); + ByteArray(std::uint8_t* p_array, std::size_t p_length, std::shared_ptr p_dataHolder) noexcept; - ByteArray& operator= (ByteArray&& p_right); + ByteArray(const ByteArray& p_right) noexcept; - ~ByteArray(); + ByteArray& operator=(const ByteArray& p_right) noexcept; - static ByteArray Alloc(std::size_t p_length); + ByteArray& operator=(ByteArray&& p_right) noexcept; - std::uint8_t* Data() const; + std::uint8_t* Data() const noexcept + { + return m_data; + } - std::size_t Length() const; - - void SetData(std::uint8_t* p_array, std::size_t p_length); + std::size_t Length() const noexcept + { + return m_length; + } - std::shared_ptr DataHolder() const; + std::shared_ptr DataHolder() const noexcept + { + return m_dataHolder; + } - void Clear(); + void SetData(std::uint8_t* p_array, std::size_t p_length) noexcept; - const static ByteArray c_empty; + void Clear() noexcept; private: std::uint8_t* m_data; diff --git a/AnnService/src/Core/CommonDataStructure.cpp b/AnnService/src/Core/CommonDataStructure.cpp index 4a91554da..e7feb0315 100644 --- a/AnnService/src/Core/CommonDataStructure.cpp +++ b/AnnService/src/Core/CommonDataStructure.cpp @@ -3,25 +3,26 @@ #include "inc/Core/CommonDataStructure.h" -using namespace SPTAG; +namespace SPTAG +{ const ByteArray ByteArray::c_empty; -ByteArray::ByteArray() +ByteArray::ByteArray() noexcept : m_data(nullptr), - m_length(0) + m_length(0) { } - -ByteArray::ByteArray(ByteArray&& p_right) +ByteArray::ByteArray(ByteArray&& p_right) noexcept : m_data(p_right.m_data), - m_length(p_right.m_length), - m_dataHolder(std::move(p_right.m_dataHolder)) + m_length(p_right.m_length), + m_dataHolder(std::move(p_right.m_dataHolder)) { + p_right.m_data = nullptr; + p_right.m_length = 0; } - ByteArray::ByteArray(std::uint8_t* p_array, std::size_t p_length, bool p_transferOnwership) : m_data(p_array), m_length(p_length) @@ -32,25 +33,22 @@ ByteArray::ByteArray(std::uint8_t* p_array, std::size_t p_length, bool p_transfe } } - -ByteArray::ByteArray(std::uint8_t* p_array, std::size_t p_length, std::shared_ptr p_dataHolder) +ByteArray::ByteArray(std::uint8_t* p_array, std::size_t p_length, std::shared_ptr p_dataHolder) noexcept : m_data(p_array), m_length(p_length), m_dataHolder(std::move(p_dataHolder)) { } - -ByteArray::ByteArray(const ByteArray& p_right) +ByteArray::ByteArray(const ByteArray& p_right) noexcept : m_data(p_right.m_data), m_length(p_right.m_length), m_dataHolder(p_right.m_dataHolder) { } - ByteArray& -ByteArray::operator= (const ByteArray& p_right) +ByteArray::operator=(const ByteArray& p_right) noexcept { m_data = p_right.m_data; m_length = p_right.m_length; @@ -59,9 +57,8 @@ ByteArray::operator= (const ByteArray& p_right) return *this; } - ByteArray& -ByteArray::operator= (ByteArray&& p_right) +ByteArray::operator=(ByteArray&& p_right) noexcept { m_data = p_right.m_data; m_length = p_right.m_length; @@ -70,63 +67,32 @@ ByteArray::operator= (ByteArray&& p_right) return *this; } - -ByteArray::~ByteArray() -{ -} - - ByteArray ByteArray::Alloc(std::size_t p_length) { - ByteArray byteArray; if (0 == p_length) { - return byteArray; + return ByteArray(); + } + else { + auto array = new std::uint8_t[p_length]; + return ByteArray(array, p_length, true); } - - byteArray.m_dataHolder.reset(new std::uint8_t[p_length], - std::default_delete()); - - byteArray.m_length = p_length; - byteArray.m_data = byteArray.m_dataHolder.get(); - return byteArray; -} - - -std::uint8_t* -ByteArray::Data() const -{ - return m_data; -} - - -std::size_t -ByteArray::Length() const -{ - return m_length; } - void -ByteArray::SetData(std::uint8_t* p_array, std::size_t p_length) +ByteArray::SetData(std::uint8_t* p_array, std::size_t p_length) noexcept { m_data = p_array; - m_length = p_length; -} - - -std::shared_ptr -ByteArray::DataHolder() const -{ - return m_dataHolder; + m_length = p_length; + m_dataHolder.reset(); } - void -ByteArray::Clear() +ByteArray::Clear() noexcept { m_data = nullptr; m_dataHolder.reset(); m_length = 0; -} \ No newline at end of file +} +}