vrpn 07.35
Virtual Reality Peripheral Network
Loading...
Searching...
No Matches
vrpn::OwningPtr< T, D > Class Template Reference

A unique-ownership smart pointer, with the ability to transfer ownership, but only explicitly (aka, not like auto_ptr did it). More...

#include <vrpn_OwningPtr.h>

Public Types

typedef T element_type
 
typedef T & reference_type
 
typedef D deleter_type
 
typedef traits::OwningPtrPointerType< T >::type pointer
 
typedef OwningPtr< T, D > type
 

Public Member Functions

 OwningPtr ()
 Construct empty.
 
 OwningPtr (pointer p)
 Construct with a raw pointer for a new object to take exclusive ownership of.
 
 ~OwningPtr ()
 Destructor: deletes owned object, if any.
 
void reset (pointer p=pointer())
 Deletes the owned object, if any, and takes ownership of a new object, if one is passed.
 
pointer release ()
 Returns the held pointer without performing the delete action.
 
void swap (type &other)
 Swap pointers with another OwningPtr of the same type.
 
pointer get () const
 Gets pointer value.
 
pointer operator-> () const
 Smart pointer operator overload.
 
reference_type operator* () const
 Smart pointer operator.
 
bool valid () const
 Checks pointer validity.
 
bool operator! () const
 Redundant way of checking pointer validity.
 

Safe bool idiom - in the absence of explicit operator bool()

typedef pointer type::* unspecified_bool_type
 
 operator unspecified_bool_type () const
 

Detailed Description

template<typename T, typename D = DefaultDeleter<T>>
class vrpn::OwningPtr< T, D >

A unique-ownership smart pointer, with the ability to transfer ownership, but only explicitly (aka, not like auto_ptr did it).

Essentially, a hybrid of boost::scoped_ptr and std::unique_ptr that doesn't require C++11.

Limitations relative to unique_ptr: no move semantics (naturally, since no C++11, and have not implemented rvalue-reference-emulation), no stateful deleters, and no casting or conversions.

Definition at line 74 of file vrpn_OwningPtr.h.

Member Typedef Documentation

◆ deleter_type

template<typename T , typename D = DefaultDeleter<T>>
typedef D vrpn::OwningPtr< T, D >::deleter_type

Definition at line 78 of file vrpn_OwningPtr.h.

◆ element_type

template<typename T , typename D = DefaultDeleter<T>>
typedef T vrpn::OwningPtr< T, D >::element_type

Definition at line 76 of file vrpn_OwningPtr.h.

◆ pointer

template<typename T , typename D = DefaultDeleter<T>>
typedef traits::OwningPtrPointerType<T>::type vrpn::OwningPtr< T, D >::pointer

Definition at line 79 of file vrpn_OwningPtr.h.

◆ reference_type

template<typename T , typename D = DefaultDeleter<T>>
typedef T& vrpn::OwningPtr< T, D >::reference_type

Definition at line 77 of file vrpn_OwningPtr.h.

◆ type

template<typename T , typename D = DefaultDeleter<T>>
typedef OwningPtr<T, D> vrpn::OwningPtr< T, D >::type

Definition at line 80 of file vrpn_OwningPtr.h.

◆ unspecified_bool_type

template<typename T , typename D = DefaultDeleter<T>>
typedef pointer type::* vrpn::OwningPtr< T, D >::unspecified_bool_type

Definition at line 144 of file vrpn_OwningPtr.h.

Constructor & Destructor Documentation

◆ OwningPtr() [1/2]

template<typename T , typename D = DefaultDeleter<T>>
vrpn::OwningPtr< T, D >::OwningPtr ( )
inline

Construct empty.

Definition at line 83 of file vrpn_OwningPtr.h.

◆ OwningPtr() [2/2]

template<typename T , typename D = DefaultDeleter<T>>
vrpn::OwningPtr< T, D >::OwningPtr ( pointer  p)
inlineexplicit

Construct with a raw pointer for a new object to take exclusive ownership of.

Definition at line 90 of file vrpn_OwningPtr.h.

◆ ~OwningPtr()

template<typename T , typename D = DefaultDeleter<T>>
vrpn::OwningPtr< T, D >::~OwningPtr ( )
inline

Destructor: deletes owned object, if any.

Definition at line 96 of file vrpn_OwningPtr.h.

References vrpn::OwningPtr< T, D >::reset().

Here is the call graph for this function:

Member Function Documentation

◆ get()

template<typename T , typename D = DefaultDeleter<T>>
pointer vrpn::OwningPtr< T, D >::get ( ) const
inline

◆ operator unspecified_bool_type()

template<typename T , typename D = DefaultDeleter<T>>
vrpn::OwningPtr< T, D >::operator unspecified_bool_type ( ) const
inline

Definition at line 145 of file vrpn_OwningPtr.h.

References vrpn::OwningPtr< T, D >::valid().

Here is the call graph for this function:

◆ operator!()

template<typename T , typename D = DefaultDeleter<T>>
bool vrpn::OwningPtr< T, D >::operator! ( ) const
inline

Redundant way of checking pointer validity.

Definition at line 152 of file vrpn_OwningPtr.h.

References vrpn::OwningPtr< T, D >::valid().

Here is the call graph for this function:

◆ operator*()

template<typename T , typename D = DefaultDeleter<T>>
reference_type vrpn::OwningPtr< T, D >::operator* ( ) const
inline

Smart pointer operator.

Definition at line 132 of file vrpn_OwningPtr.h.

References vrpn::OwningPtr< T, D >::valid(), and VRPN_ASSERT_MSG.

Here is the call graph for this function:

◆ operator->()

template<typename T , typename D = DefaultDeleter<T>>
pointer vrpn::OwningPtr< T, D >::operator-> ( ) const
inline

Smart pointer operator overload.

Definition at line 124 of file vrpn_OwningPtr.h.

References vrpn::OwningPtr< T, D >::valid(), and VRPN_ASSERT_MSG.

Here is the call graph for this function:

◆ release()

template<typename T , typename D = DefaultDeleter<T>>
pointer vrpn::OwningPtr< T, D >::release ( )
inline

Returns the held pointer without performing the delete action.

Definition at line 110 of file vrpn_OwningPtr.h.

◆ reset()

template<typename T , typename D = DefaultDeleter<T>>
void vrpn::OwningPtr< T, D >::reset ( pointer  p = pointer())
inline

Deletes the owned object, if any, and takes ownership of a new object, if one is passed.

Definition at line 100 of file vrpn_OwningPtr.h.

Referenced by vrpn_Tracker_RazerHydra::vrpn_Tracker_RazerHydra(), vrpn_Tracker_RazerHydra::vrpn_Tracker_RazerHydra(), vrpn_Tracker_RazerHydra::vrpn_Tracker_RazerHydra(), and vrpn::OwningPtr< T, D >::~OwningPtr().

◆ swap()

template<typename T , typename D = DefaultDeleter<T>>
void vrpn::OwningPtr< T, D >::swap ( type other)
inline

Swap pointers with another OwningPtr of the same type.

Definition at line 118 of file vrpn_OwningPtr.h.

Referenced by vrpn::swap().

◆ valid()

template<typename T , typename D = DefaultDeleter<T>>
bool vrpn::OwningPtr< T, D >::valid ( ) const
inline

The documentation for this class was generated from the following file: