<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>SFML - Simple and Fast Multimedia Library</title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> <link href="doxygen.css" rel="stylesheet" type="text/css" /> <link href="tabs.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="logo"> <img src="./logo.jpg" width="770" height="200" title="SFML home" alt="SFML logo" /> </div> <!-- Generated by Doxygen 1.6.3 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.htm"><span>Main Page</span></a></li> <li><a href="modules.htm"><span>Modules</span></a></li> <li class="current"><a href="annotated.htm"><span>Classes</span></a></li> <li><a href="files.htm"><span>Files</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="annotated.htm"><span>Class List</span></a></li> <li><a href="classes.htm"><span>Class Index</span></a></li> <li><a href="hierarchy.htm"><span>Class Hierarchy</span></a></li> <li><a href="functions.htm"><span>Class Members</span></a></li> </ul> </div> <div class="navpath"><b>sf</b>::<a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a> </div> </div> <div class="contents"> <h1>sf::ResourcePtr< T > Class Template Reference<br/> <small> [<a class="el" href="group__system.htm">System module</a>]</small> </h1><!-- doxytag: class="sf::ResourcePtr" --> <p>Safe pointer to a sf::Resource<T> <a href="#_details">More...</a></p> <p><code>#include <<a class="el" href="Resource_8hpp_source.htm">Resource.hpp</a>></code></p> <p><a href="classsf_1_1ResourcePtr-members.htm">List of all members.</a></p> <table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#a48ddcd15ed75e9ee3ea88e4d29402140">ResourcePtr</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Default constructor. <a href="#a48ddcd15ed75e9ee3ea88e4d29402140"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#a5ddb27ada2eafab07750f659a05125d5">ResourcePtr</a> (const T *resource)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Construct from a raw pointer. <a href="#a5ddb27ada2eafab07750f659a05125d5"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#a1d403803da42a0424cd69726fefcdcd4">ResourcePtr</a> (const <a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a>< T > &copy)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor. <a href="#a1d403803da42a0424cd69726fefcdcd4"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#a0ec69fdecccd1240030b24385f6884dd">~ResourcePtr</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor. <a href="#a0ec69fdecccd1240030b24385f6884dd"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a>< T > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#aa106df991daa6c5c7d7c2da8464da965">operator=</a> (const <a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a>< T > &right)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Assignment operator for a <a class="el" href="classsf_1_1ResourcePtr.htm" title="Safe pointer to a sf::Resource<T>">ResourcePtr</a> parameter. <a href="#aa106df991daa6c5c7d7c2da8464da965"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a>< T > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#a0a81764944c12f125fca5018e5e59f94">operator=</a> (const T *resource)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Assignment operator for a raw pointer parameter. <a href="#a0a81764944c12f125fca5018e5e59f94"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#a7af0f407f121bff6e4dcf71c7c7955de">operator const T *</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Cast operator to implicitely convert the resource pointer to its raw pointer type (T*). <a href="#a7af0f407f121bff6e4dcf71c7c7955de"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">const T & </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#a4e5401c5a07347a35cc3b9192e11b071">operator*</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Overload of unary operator *. <a href="#a4e5401c5a07347a35cc3b9192e11b071"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">const T * </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#ae58ea517eee0a97a778c3c59e4c3fe3a">operator-></a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Overload of operator -> <a href="#ae58ea517eee0a97a778c3c59e4c3fe3a"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ResourcePtr.htm#ae7e9d9ed819db0f541a7c22f5a28abf9">OnResourceDestroyed</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Function called when the observed resource is about to be destroyed. <a href="#ae7e9d9ed819db0f541a7c22f5a28abf9"></a><br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <h3>template<typename T><br/> class sf::ResourcePtr< T ></h3> <p>Safe pointer to a sf::Resource<T> </p> <p><a class="el" href="classsf_1_1ResourcePtr.htm" title="Safe pointer to a sf::Resource<T>">sf::ResourcePtr</a> is a special kind of smart pointer for resources.</p> <p>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.</p> <p>Its usage is completely transparent, so that it is similar to manipulating the raw resource directly (like any smart pointer).</p> <p>For sf::ResourcePtr<T> to work, T must inherit from the <a class="el" href="classsf_1_1Resource.htm" title="Base class for resources that need to notify dependent classes about their destruction...">sf::Resource</a> class.</p> <p>These two classes are heavily used internally in SFML to safely handle resources and the classes that use them: </p> <ul> <li><a class="el" href="classsf_1_1Texture.htm" title="Image living on the graphics card that can be used for drawing.">sf::Texture</a> / <a class="el" href="classsf_1_1Sprite.htm" title="Drawable representation of a texture, with its own transformations, color, blend...">sf::Sprite</a> </li> <li><a class="el" href="classsf_1_1Font.htm" title="Class for loading and manipulating character fonts.">sf::Font</a> / <a class="el" href="classsf_1_1Text.htm" title="Graphical text that can be drawn to a render target.">sf::Text</a> </li> <li><a class="el" href="classsf_1_1SoundBuffer.htm" title="Storage for audio samples defining a sound.">sf::SoundBuffer</a> / <a class="el" href="classsf_1_1Sound.htm" title="Regular sound that can be played in the audio environment.">sf::Sound</a></li> </ul> <p><a class="el" href="classsf_1_1Resource.htm" title="Base class for resources that need to notify dependent classes about their destruction...">sf::Resource</a> and <a class="el" href="classsf_1_1ResourcePtr.htm" title="Safe pointer to a sf::Resource<T>">sf::ResourcePtr</a> are designed for internal use, but if you feel like they would fit well in your implementation there's no problem to use them.</p> <dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="classsf_1_1Resource.htm" title="Base class for resources that need to notify dependent classes about their destruction...">sf::Resource</a> </dd></dl> <p>Definition at line <a class="el" href="Resource_8hpp_source.htm#l00127">127</a> of file <a class="el" href="Resource_8hpp_source.htm">Resource.hpp</a>.</p> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="a48ddcd15ed75e9ee3ea88e4d29402140"></a><!-- doxytag: member="sf::ResourcePtr::ResourcePtr" ref="a48ddcd15ed75e9ee3ea88e4d29402140" args="()" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T> </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>< T >::<a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a> </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Default constructor. </p> <p>A default constructed <a class="el" href="classsf_1_1ResourcePtr.htm" title="Safe pointer to a sf::Resource<T>">ResourcePtr</a> is empty (null). </p> </div> </div> <a class="anchor" id="a5ddb27ada2eafab07750f659a05125d5"></a><!-- doxytag: member="sf::ResourcePtr::ResourcePtr" ref="a5ddb27ada2eafab07750f659a05125d5" args="(const T *resource)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T> </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>< T >::<a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a> </td> <td>(</td> <td class="paramtype">const T * </td> <td class="paramname"> <em>resource</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Construct from a raw pointer. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>resource</em> </td><td>Raw pointer to the resource to wrap </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a1d403803da42a0424cd69726fefcdcd4"></a><!-- doxytag: member="sf::ResourcePtr::ResourcePtr" ref="a1d403803da42a0424cd69726fefcdcd4" args="(const ResourcePtr< T > &copy)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T> </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>< T >::<a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a> </td> <td>(</td> <td class="paramtype">const <a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a>< T > & </td> <td class="paramname"> <em>copy</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Copy constructor. </p> <p>The new <a class="el" href="classsf_1_1ResourcePtr.htm" title="Safe pointer to a sf::Resource<T>">ResourcePtr</a> will share the same resource as <em>copy</em>.</p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>copy</em> </td><td>Instance to copy </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a0ec69fdecccd1240030b24385f6884dd"></a><!-- doxytag: member="sf::ResourcePtr::~ResourcePtr" ref="a0ec69fdecccd1240030b24385f6884dd" args="()" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T> </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>< T >::~<a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a> </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Destructor. </p> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="ae7e9d9ed819db0f541a7c22f5a28abf9"></a><!-- doxytag: member="sf::ResourcePtr::OnResourceDestroyed" ref="ae7e9d9ed819db0f541a7c22f5a28abf9" args="()" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T> </div> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>< T >::OnResourceDestroyed </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Function called when the observed resource is about to be destroyed. </p> <p>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. </p> </div> </div> <a class="anchor" id="a7af0f407f121bff6e4dcf71c7c7955de"></a><!-- doxytag: member="sf::ResourcePtr::operator const T *" ref="a7af0f407f121bff6e4dcf71c7c7955de" args="() const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T> </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>< T >::operator const T * </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Cast operator to implicitely convert the resource pointer to its raw pointer type (T*). </p> <p>This might be dangerous in the general case, but in this context it is safe enough to define this operator.</p> <dl class="return"><dt><b>Returns:</b></dt><dd>Read-only pointer to the actual resource </dd></dl> </div> </div> <a class="anchor" id="a4e5401c5a07347a35cc3b9192e11b071"></a><!-- doxytag: member="sf::ResourcePtr::operator*" ref="a4e5401c5a07347a35cc3b9192e11b071" args="() const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T> </div> <table class="memname"> <tr> <td class="memname">const T& <a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>< T >::operator* </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Overload of unary operator *. </p> <p>Like raw pointers, applying the * operator returns a reference to the pointed object.</p> <dl class="return"><dt><b>Returns:</b></dt><dd>Reference to the pointed resource </dd></dl> </div> </div> <a class="anchor" id="ae58ea517eee0a97a778c3c59e4c3fe3a"></a><!-- doxytag: member="sf::ResourcePtr::operator->" ref="ae58ea517eee0a97a778c3c59e4c3fe3a" args="() const " --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T> </div> <table class="memname"> <tr> <td class="memname">const T* <a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>< T >::operator-> </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Overload of operator -> </p> <p>Like raw pointers, applying the -> operator returns the pointed object.</p> <dl class="return"><dt><b>Returns:</b></dt><dd>Pointed resource </dd></dl> </div> </div> <a class="anchor" id="a0a81764944c12f125fca5018e5e59f94"></a><!-- doxytag: member="sf::ResourcePtr::operator=" ref="a0a81764944c12f125fca5018e5e59f94" args="(const T *resource)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T> </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a><T>& <a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>< T >::operator= </td> <td>(</td> <td class="paramtype">const T * </td> <td class="paramname"> <em>resource</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Assignment operator for a raw pointer parameter. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>resource</em> </td><td><a class="el" href="classsf_1_1Resource.htm" title="Base class for resources that need to notify dependent classes about their destruction...">Resource</a> to assign</td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Reference to self </dd></dl> </div> </div> <a class="anchor" id="aa106df991daa6c5c7d7c2da8464da965"></a><!-- doxytag: member="sf::ResourcePtr::operator=" ref="aa106df991daa6c5c7d7c2da8464da965" args="(const ResourcePtr< T > &right)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<typename T> </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a><T>& <a class="el" href="classsf_1_1ResourcePtr.htm">sf::ResourcePtr</a>< T >::operator= </td> <td>(</td> <td class="paramtype">const <a class="el" href="classsf_1_1ResourcePtr.htm">ResourcePtr</a>< T > & </td> <td class="paramname"> <em>right</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Assignment operator for a <a class="el" href="classsf_1_1ResourcePtr.htm" title="Safe pointer to a sf::Resource<T>">ResourcePtr</a> parameter. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>right</em> </td><td>Instance to assign</td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Reference to self </dd></dl> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="Resource_8hpp_source.htm">Resource.hpp</a></li> </ul> </div> <p id="footer"> :: Copyright © 2007-2008 Laurent Gomila, all rights reserved :: Documentation generated by <a href="http://www.doxygen.org/" title="doxygen website">doxygen 1.5.2</a> :: </p> </body> </html>