1 #ifndef PTR_STACK_H_62B23520_7C8E_11DE_8A39_0800200C9A66
2 #define PTR_STACK_H_62B23520_7C8E_11DE_8A39_0800200C9A66
4 #if !defined(__GNUC__) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || (__GNUC__ >= 4) // GCC supports "pragma once" correctly since 3.4
8 #include "yaml-cpp/noncopyable.h"
14 class ptr_stack
: private YAML::noncopyable
18 ~ptr_stack() { clear(); }
21 for(unsigned i
=0;i
<m_data
.size();i
++)
26 std::size_t size() const { return m_data
.size(); }
27 bool empty() const { return m_data
.empty(); }
29 void push(std::auto_ptr
<T
> t
) {
30 m_data
.push_back(NULL
);
31 m_data
.back() = t
.release();
33 std::auto_ptr
<T
> pop() {
34 std::auto_ptr
<T
> t(m_data
.back());
38 T
& top() { return *m_data
.back(); }
39 const T
& top() const { return *m_data
.back(); }
42 std::vector
<T
*> m_data
;
45 #endif // PTR_STACK_H_62B23520_7C8E_11DE_8A39_0800200C9A66