Ogre::SharedPtr< T > Class Template Reference

Reference-counted shared pointer, used for objects where implicit destruction is required. More...

#include <OgreSharedPtr.h>

Inheritance diagram for Ogre::SharedPtr< T >:
[legend]

List of all members.

Public Member Functions

OGRE_AUTO_SHARED_MUTEX SharedPtr ()
 Constructor, does not initialise the SharedPtr.
template<class Y>
 SharedPtr (Y *rep)
 SharedPtr (const SharedPtr &r)
SharedPtroperator= (const SharedPtr &r)
template<class Y>
 SharedPtr (const SharedPtr< Y > &r)
template<class Y>
SharedPtroperator= (const SharedPtr< Y > &r)
virtual ~SharedPtr ()
T & operator * () const
T * operator-> () const
T * get () const
void bind (T *rep)
 Binds rep to the SharedPtr.
bool unique () const
unsigned int useCount () const
unsigned int * useCountPointer () const
T * getPointer () const
bool isNull (void) const
void setNull (void)

Protected Member Functions

void release (void)
virtual void destroy (void)
virtual void swap (SharedPtr< T > &other)

Protected Attributes

T * pRep
unsigned int * pUseCount


Detailed Description

template<class T>
class Ogre::SharedPtr< T >

Reference-counted shared pointer, used for objects where implicit destruction is required.

Remarks:
This is a standard shared pointer implementation which uses a reference count to work out when to delete the object.
If OGRE_THREAD_SUPPORT is defined to be 1, use of this class is thread-safe.

Definition at line 44 of file OgreSharedPtr.h.


Constructor & Destructor Documentation

template<class T>
OGRE_AUTO_SHARED_MUTEX Ogre::SharedPtr< T >::SharedPtr (  ) 

Constructor, does not initialise the SharedPtr.

Remarks:
Dangerous! You have to call bind() before using the SharedPtr.

Definition at line 54 of file OgreSharedPtr.h.

template<class T>
template<class Y>
Ogre::SharedPtr< T >::SharedPtr ( Y *  rep  )  [explicit]

Definition at line 60 of file OgreSharedPtr.h.

template<class T>
Ogre::SharedPtr< T >::SharedPtr ( const SharedPtr< T > &  r  ) 

Definition at line 65 of file OgreSharedPtr.h.

template<class T>
template<class Y>
Ogre::SharedPtr< T >::SharedPtr ( const SharedPtr< Y > &  r  ) 

Definition at line 95 of file OgreSharedPtr.h.

template<class T>
virtual Ogre::SharedPtr< T >::~SharedPtr (  )  [virtual]

Definition at line 124 of file OgreSharedPtr.h.


Member Function Documentation

template<class T>
SharedPtr& Ogre::SharedPtr< T >::operator= ( const SharedPtr< T > &  r  ) 

Definition at line 84 of file OgreSharedPtr.h.

template<class T>
template<class Y>
SharedPtr& Ogre::SharedPtr< T >::operator= ( const SharedPtr< Y > &  r  ) 

Definition at line 115 of file OgreSharedPtr.h.

template<class T>
T& Ogre::SharedPtr< T >::operator * (  )  const

Definition at line 129 of file OgreSharedPtr.h.

template<class T>
T* Ogre::SharedPtr< T >::operator-> (  )  const

Definition at line 130 of file OgreSharedPtr.h.

template<class T>
T* Ogre::SharedPtr< T >::get (  )  const

Definition at line 131 of file OgreSharedPtr.h.

Referenced by Ogre::operator!=(), and Ogre::operator==().

template<class T>
void Ogre::SharedPtr< T >::bind ( T *  rep  ) 

Binds rep to the SharedPtr.

Remarks:
Assumes that the SharedPtr is uninitialised!

Definition at line 137 of file OgreSharedPtr.h.

template<class T>
bool Ogre::SharedPtr< T >::unique (  )  const

Definition at line 145 of file OgreSharedPtr.h.

template<class T>
unsigned int Ogre::SharedPtr< T >::useCount (  )  const

Definition at line 146 of file OgreSharedPtr.h.

template<class T>
unsigned int* Ogre::SharedPtr< T >::useCountPointer (  )  const

Definition at line 147 of file OgreSharedPtr.h.

Referenced by Ogre::CompositorPtr::CompositorPtr(), Ogre::FontPtr::FontPtr(), Ogre::GpuProgramPtr::GpuProgramPtr(), Ogre::HighLevelGpuProgramPtr::HighLevelGpuProgramPtr(), Ogre::MaterialPtr::MaterialPtr(), Ogre::TexturePtr::operator=(), Ogre::SkeletonPtr::operator=(), Ogre::PatchMeshPtr::operator=(), Ogre::MaterialPtr::operator=(), Ogre::HighLevelGpuProgramPtr::operator=(), Ogre::GpuProgramPtr::operator=(), Ogre::FontPtr::operator=(), Ogre::CompositorPtr::operator=(), Ogre::PatchMeshPtr::PatchMeshPtr(), Ogre::SharedPtr< Ogre::PatchMesh >::SharedPtr(), Ogre::SkeletonPtr::SkeletonPtr(), and Ogre::TexturePtr::TexturePtr().

template<class T>
T* Ogre::SharedPtr< T >::getPointer (  )  const

Definition at line 149 of file OgreSharedPtr.h.

Referenced by Ogre::CompositorPtr::CompositorPtr(), Ogre::FontPtr::FontPtr(), Ogre::GpuProgramPtr::GpuProgramPtr(), Ogre::HighLevelGpuProgramPtr::HighLevelGpuProgramPtr(), Ogre::MaterialPtr::MaterialPtr(), Ogre::TexturePtr::operator=(), Ogre::SkeletonPtr::operator=(), Ogre::PatchMeshPtr::operator=(), Ogre::MaterialPtr::operator=(), Ogre::HighLevelGpuProgramPtr::operator=(), Ogre::GpuProgramPtr::operator=(), Ogre::FontPtr::operator=(), Ogre::CompositorPtr::operator=(), Ogre::PatchMeshPtr::PatchMeshPtr(), Ogre::SharedPtr< Ogre::PatchMesh >::SharedPtr(), Ogre::SkeletonPtr::SkeletonPtr(), and Ogre::TexturePtr::TexturePtr().

template<class T>
bool Ogre::SharedPtr< T >::isNull ( void   )  const

Definition at line 151 of file OgreSharedPtr.h.

Referenced by Ogre::TexturePtr::operator=(), Ogre::SkeletonPtr::operator=(), Ogre::PatchMeshPtr::operator=(), Ogre::MaterialPtr::operator=(), Ogre::HighLevelGpuProgramPtr::operator=(), Ogre::GpuProgramPtr::operator=(), Ogre::FontPtr::operator=(), and Ogre::CompositorPtr::operator=().

template<class T>
void Ogre::SharedPtr< T >::setNull ( void   ) 

Definition at line 153 of file OgreSharedPtr.h.

template<class T>
void Ogre::SharedPtr< T >::release ( void   )  [protected]

Definition at line 165 of file OgreSharedPtr.h.

Referenced by Ogre::SharedPtr< Ogre::PatchMesh >::setNull(), and Ogre::SharedPtr< Ogre::PatchMesh >::~SharedPtr().

template<class T>
virtual void Ogre::SharedPtr< T >::destroy ( void   )  [protected, virtual]

Reimplemented in Ogre::MeshPtr.

Definition at line 191 of file OgreSharedPtr.h.

Referenced by Ogre::SharedPtr< Ogre::PatchMesh >::release().

template<class T>
virtual void Ogre::SharedPtr< T >::swap ( SharedPtr< T > &  other  )  [protected, virtual]

Definition at line 202 of file OgreSharedPtr.h.

Referenced by Ogre::SharedPtr< Ogre::PatchMesh >::operator=().


Member Data Documentation

template<class T>
T* Ogre::SharedPtr< T >::pRep [protected]

Definition at line 46 of file OgreSharedPtr.h.

Referenced by Ogre::SharedPtr< Ogre::PatchMesh >::bind(), Ogre::SharedPtr< Ogre::PatchMesh >::destroy(), Ogre::SharedPtr< Ogre::PatchMesh >::get(), Ogre::SharedPtr< Ogre::PatchMesh >::getPointer(), Ogre::SharedPtr< Ogre::PatchMesh >::isNull(), Ogre::SharedPtr< Ogre::PatchMesh >::operator *(), Ogre::SharedPtr< Ogre::PatchMesh >::operator->(), Ogre::SharedPtr< Ogre::PatchMesh >::operator=(), Ogre::SharedPtr< Ogre::PatchMesh >::setNull(), Ogre::SharedPtr< Ogre::PatchMesh >::SharedPtr(), and Ogre::SharedPtr< Ogre::PatchMesh >::swap().

template<class T>
unsigned int* Ogre::SharedPtr< T >::pUseCount [protected]

Definition at line 47 of file OgreSharedPtr.h.

Referenced by Ogre::SharedPtr< Ogre::PatchMesh >::bind(), Ogre::SharedPtr< Ogre::PatchMesh >::destroy(), Ogre::SharedPtr< Ogre::PatchMesh >::release(), Ogre::SharedPtr< Ogre::PatchMesh >::setNull(), Ogre::SharedPtr< Ogre::PatchMesh >::SharedPtr(), Ogre::SharedPtr< Ogre::PatchMesh >::swap(), Ogre::SharedPtr< Ogre::PatchMesh >::unique(), Ogre::SharedPtr< Ogre::PatchMesh >::useCount(), and Ogre::SharedPtr< Ogre::PatchMesh >::useCountPointer().


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

Copyright © 2000-2005 by The OGRE Team
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sat May 10 16:29:52 2008