OpenSceneGraph  3.0.1
Public Types | Public Member Functions | Protected Attributes
osg::observer_ptr Class Reference

Smart pointer for observed objects, that automatically set pointers to them to null when they are deleted. More...

Inheritance diagram for osg::observer_ptr:
Inheritance graph
[legend]

List of all members.

Public Types

typedef T element_type

Public Member Functions

 observer_ptr ()
 observer_ptr (const ref_ptr< T > &rp)
 Create a observer_ptr from a ref_ptr.
 observer_ptr (T *rp)
 Create a observer_ptr from a raw pointer.
 observer_ptr (const observer_ptr &wp)
 ~observer_ptr ()
observer_ptroperator= (const observer_ptr &wp)
observer_ptroperator= (const ref_ptr< T > &rp)
observer_ptroperator= (T *rp)
bool lock (ref_ptr< T > &rptr) const
 Assign the observer_ptr to a ref_ptr.
bool operator== (const observer_ptr &wp) const
 Comparison operators.
bool operator!= (const observer_ptr &wp) const
bool operator< (const observer_ptr &wp) const
bool operator> (const observer_ptr &wp) const
bool operator== (const T *ptr) const
bool operator!= (const T *ptr) const
bool operator< (const T *ptr) const
bool operator> (const T *ptr) const
T & operator* () const
T * operator-> () const
T * get () const
bool operator! () const
bool valid () const

Protected Attributes

osg::ref_ptr< ObserverSet_reference
T * _ptr

Detailed Description

Smart pointer for observed objects, that automatically set pointers to them to null when they are deleted.

To use the observer_ptr<> robustly in multi-threaded applications it is recommend to access the pointer via the lock() method that passes back a ref_ptr<> that safely takes a reference to the object to prevent deletion during usage of the object. In certain conditions it may be safe to use the pointer directly without using lock(), which will confer a perfomance advantage, the conditions are: 1) The data structure is only accessed/deleted in single threaded/serial way. 2) The data strucutre is guarenteed by high level management of data strucutures and threads which avoid possible situations where the observer_ptr<>'s object may be deleted by one thread whilst being accessed by another. If you are in any doubt about whether it is safe to access the object safe then use the ref_ptr<> observer_ptr<>.lock() combination.


Member Typedef Documentation


Constructor & Destructor Documentation

osg::observer_ptr::observer_ptr ( ) [inline]
osg::observer_ptr::observer_ptr ( const ref_ptr< T > &  rp) [inline]

Create a observer_ptr from a ref_ptr.

osg::observer_ptr::observer_ptr ( T *  rp) [inline]

Create a observer_ptr from a raw pointer.

For compatibility; the result might not be lockable.

osg::observer_ptr::observer_ptr ( const observer_ptr wp) [inline]
osg::observer_ptr::~observer_ptr ( ) [inline]

Member Function Documentation

T* osg::observer_ptr::get ( ) const [inline]
bool osg::observer_ptr::lock ( ref_ptr< T > &  rptr) const [inline]

Assign the observer_ptr to a ref_ptr.

The ref_ptr will be valid if the referenced object hasn't been deleted and has a ref count > 0.

Referenced by osg::ref_ptr< osg::Sphere >::ref_ptr().

bool osg::observer_ptr::operator! ( ) const [inline]
bool osg::observer_ptr::operator!= ( const observer_ptr wp) const [inline]
bool osg::observer_ptr::operator!= ( const T *  ptr) const [inline]
T& osg::observer_ptr::operator* ( ) const [inline]
T* osg::observer_ptr::operator-> ( ) const [inline]
bool osg::observer_ptr::operator< ( const observer_ptr wp) const [inline]
bool osg::observer_ptr::operator< ( const T *  ptr) const [inline]
observer_ptr& osg::observer_ptr::operator= ( const observer_ptr wp) [inline]
observer_ptr& osg::observer_ptr::operator= ( const ref_ptr< T > &  rp) [inline]
observer_ptr& osg::observer_ptr::operator= ( T *  rp) [inline]
bool osg::observer_ptr::operator== ( const observer_ptr wp) const [inline]

Comparison operators.

These continue to work even after the observed object has been deleted.

bool osg::observer_ptr::operator== ( const T *  ptr) const [inline]
bool osg::observer_ptr::operator> ( const observer_ptr wp) const [inline]
bool osg::observer_ptr::operator> ( const T *  ptr) const [inline]
bool osg::observer_ptr::valid ( ) const [inline]

Member Data Documentation

T* osg::observer_ptr::_ptr [protected]

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

osg logo
Generated at Mon Oct 3 2011 12:39:43 for the OpenSceneGraph by doxygen 1.7.5.