63 lines
912 B
C++
63 lines
912 B
C++
|
|
||
|
#ifndef __AI_BOOST_SCOPED_PTR_INCLUDED
|
||
|
#define __AI_BOOST_SCOPED_PTR_INCLUDED
|
||
|
|
||
|
#ifndef BOOST_SCOPED_PTR_HPP_INCLUDED
|
||
|
|
||
|
#include <assert.h>
|
||
|
|
||
|
namespace boost {
|
||
|
|
||
|
// small replacement for boost::scoped_ptr
|
||
|
template <class T>
|
||
|
class scoped_ptr
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
// provide a default construtctor
|
||
|
scoped_ptr()
|
||
|
: ptr(NULL)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
// construction from an existing heap object of type T
|
||
|
scoped_ptr(T* _ptr)
|
||
|
: ptr(_ptr)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
// automatic destruction of the wrapped object at the
|
||
|
// end of our lifetime
|
||
|
~scoped_ptr()
|
||
|
{
|
||
|
delete ptr;
|
||
|
}
|
||
|
|
||
|
inline T* get()
|
||
|
{
|
||
|
return ptr;
|
||
|
}
|
||
|
|
||
|
inline operator T*()
|
||
|
{
|
||
|
return ptr;
|
||
|
}
|
||
|
|
||
|
inline T* operator-> ()
|
||
|
{
|
||
|
return ptr;
|
||
|
}
|
||
|
|
||
|
private:
|
||
|
|
||
|
// encapsulated object pointer
|
||
|
T* ptr;
|
||
|
|
||
|
};
|
||
|
|
||
|
} // end of namespace boost
|
||
|
|
||
|
#else
|
||
|
# error "scoped_ptr.h was already included"
|
||
|
#endif
|
||
|
#endif // __AI_BOOST_SCOPED_PTR_INCLUDED
|