Support Forum       Library Source       SourceForge Page       G3D Web Page     
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | List of all members
G3D::ReferenceCountedPointer< T > Class Template Reference

Use ReferenceCountedPointer<T> in place of T* in your program. More...

Public Types

typedef T element_type

Public Member Functions

 ReferenceCountedPointer ()
template<class S >
 ReferenceCountedPointer (const ReferenceCountedPointer< S > &p)
 Allow silent cast to the base class.
 ReferenceCountedPointer (const ReferenceCountedPointer< T > &p)
 ReferenceCountedPointer (const T *p)
 Allows construction from a raw pointer.
 ~ReferenceCountedPointer ()
template<class S >
ReferenceCountedPointer< S > _downcast ()
 Explicit cast to a subclass.
template<class S >
const ReferenceCountedPointer< S > _downcast () const
bool _isNull () const
bool _notNull () const
T * get () const
size_t hashCode () const
 operator bool () const
 For compatibility with shared_ptr.
bool operator!= (const ReferenceCountedPointer< T > &y) const
T & operator* () const
T * operator-> () const
bool operator< (const ReferenceCountedPointer< T > &y) const
bool operator<= (const ReferenceCountedPointer< T > &y) const
const ReferenceCountedPointer
< T > & 
operator= (const ReferenceCountedPointer< T > &p)
ReferenceCountedPointer< T > & operator= (T *p)
bool operator== (const ReferenceCountedPointer< T > &y) const
bool operator> (const ReferenceCountedPointer< T > &y) const
bool operator>= (const ReferenceCountedPointer< T > &y) const
T * pointer () const
template<class S >
bool pointsToA () const
 Returns true if this is a non-NULL pointer to an object of type S.
void reset (T *p)
 For compatibility with shared_ptr.
int unique () const
 Returns true if this is the last reference to an object.

Detailed Description

template<class T>
class G3D::ReferenceCountedPointer< T >

Use ReferenceCountedPointer<T> in place of T* in your program.

T must subclass ReferenceCountedObject. For convenience, most classes define a "Ref" typedef member:

class Foo : public ReferenceCountedObject { public: typedef ReferenceCountedPointer<Foo> Ref; };

Member Typedef Documentation

template<class T>
typedef T G3D::ReferenceCountedPointer< T >::element_type

Constructor & Destructor Documentation

template<class T>
G3D::ReferenceCountedPointer< T >::ReferenceCountedPointer ( )
inline
template<class T>
template<class S >
G3D::ReferenceCountedPointer< T >::ReferenceCountedPointer ( const ReferenceCountedPointer< S > &  p)
inline

Allow silent cast to the base class.

  SubRef  s = new Sub();
  BaseRef b = s;

i.e., compile-time subtyping rule RCP<T> <: RCP<S> if T <: S

template<class T>
G3D::ReferenceCountedPointer< T >::ReferenceCountedPointer ( const ReferenceCountedPointer< T > &  p)
inline
template<class T>
G3D::ReferenceCountedPointer< T >::ReferenceCountedPointer ( const T *  p)
inline

Allows construction from a raw pointer.

That object will thereafter be reference counted – do not call delete on it.

Use of const allows downcast on const references

template<class T>
G3D::ReferenceCountedPointer< T >::~ReferenceCountedPointer ( )
inline

Member Function Documentation

template<class T>
template<class S >
ReferenceCountedPointer<S> G3D::ReferenceCountedPointer< T >::_downcast ( )
inline

Explicit cast to a subclass.

Acts like dynamic cast; the result will be NULL if the cast cannot succeed. Not supported on VC6. Sub::Ref s = new Sub(); Base::Ref b = s; s = b._downcast<Sub>(); // Note that the template argument is the object type, not the pointer type.

Deprecated:
Use dynamic_pointer_cast
template<class T>
template<class S >
const ReferenceCountedPointer<S> G3D::ReferenceCountedPointer< T >::_downcast ( ) const
inline
Deprecated:
Use dynamic_pointer_cast
template<class T>
bool G3D::ReferenceCountedPointer< T >::_isNull ( ) const
inline
template<class T>
bool G3D::ReferenceCountedPointer< T >::_notNull ( ) const
inline
template<class T>
T* G3D::ReferenceCountedPointer< T >::get ( ) const
inline
template<class T>
size_t G3D::ReferenceCountedPointer< T >::hashCode ( ) const
inline
template<class T>
G3D::ReferenceCountedPointer< T >::operator bool ( ) const
inline

For compatibility with shared_ptr.

template<class T>
bool G3D::ReferenceCountedPointer< T >::operator!= ( const ReferenceCountedPointer< T > &  y) const
inline
template<class T>
T& G3D::ReferenceCountedPointer< T >::operator* ( ) const
inline
template<class T>
T* G3D::ReferenceCountedPointer< T >::operator-> ( ) const
inline
template<class T>
bool G3D::ReferenceCountedPointer< T >::operator< ( const ReferenceCountedPointer< T > &  y) const
inline
template<class T>
bool G3D::ReferenceCountedPointer< T >::operator<= ( const ReferenceCountedPointer< T > &  y) const
inline
template<class T>
const ReferenceCountedPointer<T>& G3D::ReferenceCountedPointer< T >::operator= ( const ReferenceCountedPointer< T > &  p)
inline
template<class T>
ReferenceCountedPointer<T>& G3D::ReferenceCountedPointer< T >::operator= ( T *  p)
inline
template<class T>
bool G3D::ReferenceCountedPointer< T >::operator== ( const ReferenceCountedPointer< T > &  y) const
inline
template<class T>
bool G3D::ReferenceCountedPointer< T >::operator> ( const ReferenceCountedPointer< T > &  y) const
inline
template<class T>
bool G3D::ReferenceCountedPointer< T >::operator>= ( const ReferenceCountedPointer< T > &  y) const
inline
template<class T>
T* G3D::ReferenceCountedPointer< T >::pointer ( ) const
inline
template<class T>
template<class S >
bool G3D::ReferenceCountedPointer< T >::pointsToA ( ) const
inline

Returns true if this is a non-NULL pointer to an object of type S.

GuiWindow::Ref c = ...; if (c.pointsToA<CameraControlWindow>()) { ... }

template<class T>
void G3D::ReferenceCountedPointer< T >::reset ( T *  p)
inline

For compatibility with shared_ptr.

template<class T>
int G3D::ReferenceCountedPointer< T >::unique ( ) const
inline

Returns true if this is the last reference to an object.

Useful for flushing memoization caches– a cache that holds the last reference is unnecessarily keeping an object alive.

Not threadsafe.

Deprecated:
Use WeakReferenceCountedPointer for caches

documentation generated on Sun Aug 26 2012 21:55:46 using doxygen 1.8.1.2