25 #include "proton/config.hpp"
38 template <
class T>
class pn_unique_ptr {
40 pn_unique_ptr(T* p=0) : ptr_(p) {}
42 pn_unique_ptr(pn_unique_ptr&& x) : ptr_(0) { std::swap(ptr_, x.ptr_); }
44 pn_unique_ptr(
const pn_unique_ptr& x) : ptr_() { std::swap(ptr_, const_cast<pn_unique_ptr&>(x).ptr_); }
46 ~pn_unique_ptr() {
delete(ptr_); }
47 T& operator*()
const {
return *ptr_; }
48 T* operator->()
const {
return ptr_; }
49 T*
get()
const {
return ptr_; }
50 void reset(T* p = 0) { pn_unique_ptr<T> tmp(p); std::swap(ptr_, tmp.ptr_); }
51 T* release() { T *p = ptr_; ptr_ = 0;
return p; }
52 operator bool()
const {
return get(); }
53 bool operator !()
const {
return get(); }
56 operator std::unique_ptr<T>() { T *p = ptr_; ptr_ = 0;
return std::unique_ptr<T>(p); }
67 #endif // UNIQUE_PTR_HPP