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 {
|
class ptr_vector : private YAML::noncopyable {
|
||||||
public:
|
public:
|
||||||
ptr_vector() {}
|
ptr_vector() {}
|
||||||
~ptr_vector() { clear(); }
|
|
||||||
|
|
||||||
void clear() {
|
void clear() {
|
||||||
for (std::size_t i = 0; i < m_data.size(); i++)
|
|
||||||
delete m_data[i];
|
|
||||||
m_data.clear();
|
m_data.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::size_t size() const { return m_data.size(); }
|
std::size_t size() const { return m_data.size(); }
|
||||||
bool empty() const { return m_data.empty(); }
|
bool empty() const { return m_data.empty(); }
|
||||||
|
|
||||||
void push_back(std::unique_ptr<T> &t) {
|
void push_back(std::unique_ptr<T>&& t) {
|
||||||
m_data.push_back(NULL);
|
m_data.push_back(std::move(t));
|
||||||
m_data.back() = t.release();
|
|
||||||
}
|
}
|
||||||
T& operator[](std::size_t i) { return *m_data[i]; }
|
T& operator[](std::size_t i) { return *m_data[i]; }
|
||||||
const T& operator[](std::size_t i) const { return *m_data[i]; }
|
const T& operator[](std::size_t i) const { return *m_data[i]; }
|
||||||
|
|
||||||
T& back() { return *m_data.back(); }
|
T& back() {
|
||||||
const T& back() const { return *m_data.back(); }
|
return *(m_data.back().get());
|
||||||
|
}
|
||||||
|
|
||||||
|
const T& back() const {
|
||||||
|
return *(m_data.back().get());
|
||||||
|
}
|
||||||
|
|
||||||
private:
|
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_startedStream = true;
|
||||||
m_simpleKeyAllowed = true;
|
m_simpleKeyAllowed = true;
|
||||||
std::unique_ptr<IndentMarker> pIndent(new IndentMarker(-1, IndentMarker::NONE));
|
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());
|
m_indents.push(&m_indentRefs.back());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -298,7 +298,7 @@ Scanner::IndentMarker* Scanner::PushIndentTo(int column,
|
|||||||
|
|
||||||
// and then the indent
|
// and then the indent
|
||||||
m_indents.push(&indent);
|
m_indents.push(&indent);
|
||||||
m_indentRefs.push_back(pIndent);
|
m_indentRefs.push_back(std::move(pIndent));
|
||||||
return &m_indentRefs.back();
|
return &m_indentRefs.back();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user