Public Member Functions
sf::ResourcePtr< T > Class Template Reference

Safe pointer to a sf::Resource<T> More...

#include <Resource.hpp>

List of all members.

Public Member Functions

 ResourcePtr ()
 Default constructor.
 ResourcePtr (const T *resource)
 Construct from a raw pointer.
 ResourcePtr (const ResourcePtr< T > &copy)
 Copy constructor.
 ~ResourcePtr ()
 Destructor.
ResourcePtr< T > & operator= (const ResourcePtr< T > &right)
 Assignment operator for a ResourcePtr parameter.
ResourcePtr< T > & operator= (const T *resource)
 Assignment operator for a raw pointer parameter.
 operator const T * () const
 Cast operator to implicitely convert the resource pointer to its raw pointer type (T*)
const T & operator* () const
 Overload of unary operator *.
const T * operator-> () const
 Overload of operator ->
void OnResourceDestroyed ()
 Function called when the observed resource is about to be destroyed.

Detailed Description

template<typename T>
class sf::ResourcePtr< T >

Safe pointer to a sf::Resource<T>

sf::ResourcePtr is a special kind of smart pointer for resources.

Its main feature is to automatically reset its internal pointer to 0 when the resource gets destroyed, so that pointers to a resource never become invalid when the resource is destroyed. Instead, it properly returns 0 when the resource no longer exists.

Its usage is completely transparent, so that it is similar to manipulating the raw resource directly (like any smart pointer).

For sf::ResourcePtr<T> to work, T must inherit from the sf::Resource class.

These two classes are heavily used internally in SFML to safely handle resources and the classes that use them:

sf::Resource and sf::ResourcePtr are designed for internal use, but if you feel like they would fit well in your implementation there's no problem to use them.

See also:
sf::Resource

Definition at line 127 of file Resource.hpp.


Constructor & Destructor Documentation

template<typename T>
ResourcePtr::ResourcePtr ( )

Default constructor.

A default constructed ResourcePtr is empty (null).

Definition at line 28 of file ResourcePtr.inl.

template<typename T>
ResourcePtr::ResourcePtr ( const T *  resource)

Construct from a raw pointer.

Parameters:
resourceRaw pointer to the resource to wrap

Definition at line 37 of file ResourcePtr.inl.

template<typename T>
ResourcePtr::ResourcePtr ( const ResourcePtr< T > &  copy)

Copy constructor.

The new ResourcePtr will share the same resource as copy.

Parameters:
copyInstance to copy

Definition at line 47 of file ResourcePtr.inl.

template<typename T>
sf::ResourcePtr< T >::~ResourcePtr ( )

Destructor.


Member Function Documentation

template<typename T>
void sf::ResourcePtr< T >::OnResourceDestroyed ( )

Function called when the observed resource is about to be destroyed.

This functions is called by the destructor of the pointed resource. It allows this instance to reset its internal pointer when the resource is destroyed, and avoid dangling pointers.

template<typename T>
ResourcePtr::operator const T * ( ) const

Cast operator to implicitely convert the resource pointer to its raw pointer type (T*)

This might be dangerous in the general case, but in this context it is safe enough to define this operator.

Returns:
Read-only pointer to the actual resource

Definition at line 98 of file ResourcePtr.inl.

template<typename T>
const T& sf::ResourcePtr< T >::operator* ( ) const

Overload of unary operator *.

Like raw pointers, applying the * operator returns a reference to the pointed object.

Returns:
Reference to the pointed resource
template<typename T>
const T* sf::ResourcePtr< T >::operator-> ( ) const

Overload of operator ->

Like raw pointers, applying the -> operator returns the pointed object.

Returns:
Pointed resource
template<typename T>
ResourcePtr< T > & ResourcePtr::operator= ( const ResourcePtr< T > &  right)

Assignment operator for a ResourcePtr parameter.

Parameters:
rightInstance to assign
Returns:
Reference to self

Definition at line 66 of file ResourcePtr.inl.

template<typename T>
ResourcePtr< T > & ResourcePtr::operator= ( const T *  resource)

Assignment operator for a raw pointer parameter.

Parameters:
resourceResource to assign
Returns:
Reference to self

Definition at line 82 of file ResourcePtr.inl.


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