convert ptr_vector to unique_ptr
This commit is contained in:
parent
398ec19e81
commit
e32999b599
@ -20,29 +20,30 @@ template <typename T>
|
||||
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> &t) {
|
||||
m_data.push_back(NULL);
|
||||
m_data.back() = t.release();
|
||||
void push_back(std::unique_ptr<T>&& 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<T*> m_data;
|
||||
std::vector<std::unique_ptr<T>> m_data;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@ -234,7 +234,7 @@ void Scanner::StartStream() {
|
||||
m_startedStream = true;
|
||||
m_simpleKeyAllowed = true;
|
||||
std::unique_ptr<IndentMarker> 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();
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user