From e32999b5995094fd98a063b0a2be6a3eb8e3b788 Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Fri, 3 Jul 2015 15:10:07 +0200 Subject: [PATCH] convert ptr_vector to unique_ptr --- src/ptr_vector.h | 19 ++++++++++--------- src/scanner.cpp | 4 ++-- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/ptr_vector.h b/src/ptr_vector.h index de4f8c4..b592ccd 100644 --- a/src/ptr_vector.h +++ b/src/ptr_vector.h @@ -20,29 +20,30 @@ template class ptr_vector : private YAML::noncopyable { public: ptr_vector() {} - ~ptr_vector() { clear(); } void clear() { - for (std::size_t i = 0; i < m_data.size(); i++) - delete m_data[i]; m_data.clear(); } std::size_t size() const { return m_data.size(); } bool empty() const { return m_data.empty(); } - void push_back(std::unique_ptr &t) { - m_data.push_back(NULL); - m_data.back() = t.release(); + void push_back(std::unique_ptr&& t) { + m_data.push_back(std::move(t)); } T& operator[](std::size_t i) { return *m_data[i]; } const T& operator[](std::size_t i) const { return *m_data[i]; } - T& back() { return *m_data.back(); } - const T& back() const { return *m_data.back(); } + T& back() { + return *(m_data.back().get()); + } + + const T& back() const { + return *(m_data.back().get()); + } private: - std::vector m_data; + std::vector> m_data; }; } diff --git a/src/scanner.cpp b/src/scanner.cpp index f89ed9b..767b8e1 100644 --- a/src/scanner.cpp +++ b/src/scanner.cpp @@ -234,7 +234,7 @@ void Scanner::StartStream() { m_startedStream = true; m_simpleKeyAllowed = true; std::unique_ptr pIndent(new IndentMarker(-1, IndentMarker::NONE)); - m_indentRefs.push_back(pIndent); + m_indentRefs.push_back(std::move(pIndent)); m_indents.push(&m_indentRefs.back()); } @@ -298,7 +298,7 @@ Scanner::IndentMarker* Scanner::PushIndentTo(int column, // and then the indent m_indents.push(&indent); - m_indentRefs.push_back(pIndent); + m_indentRefs.push_back(std::move(pIndent)); return &m_indentRefs.back(); }