<head>
<title>SFML - Simple and Fast Multimedia Library</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<link rel="stylesheet" type="text/css" href="doxygen.css" title="default" media="screen,print" />
</head>
<body>
<div id="banner-container">
<div id="banner">
<span id="sfml">SFML</span>
</div>
</div>
<div id="content">
<!-- Generated by Doxygen 1.8.2 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<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 id="navrow2" class="tabs2">
<ul class="tablist">
<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 id="nav-path" class="navpath">
<ul>
<li class="navelem"><b>sf</b></li><li class="navelem"><a class="el" href="classsf_1_1ThreadLocalPtr.htm">ThreadLocalPtr</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> |
<a href="#pri-methods">Private Member Functions</a> |
<a href="classsf_1_1ThreadLocalPtr-members.htm">List of all members</a> </div>
<div class="headertitle">
<div class="title">sf::ThreadLocalPtr< T > Class Template Reference<div class="ingroups"><a class="el" href="group__system.htm">System module</a></div></div> </div>
</div><!--header-->
<div class="contents">
<p>Pointer to a thread-local variable.
<a href="classsf_1_1ThreadLocalPtr.htm#details">More...</a></p>
<p><code>#include <<a class="el" href="ThreadLocalPtr_8hpp_source.htm">ThreadLocalPtr.hpp</a>></code></p>
<div class="dynheader">
Inheritance diagram for sf::ThreadLocalPtr< T >:</div>
<div class="dyncontent">
<div class="center">
<img src="classsf_1_1ThreadLocalPtr.png" usemap="#sf::ThreadLocalPtr< T >_map" alt=""/>
<map id="sf::ThreadLocalPtr< T >_map" name="sf::ThreadLocalPtr< T >_map">
<area href="classsf_1_1ThreadLocal.htm" title="Defines variables with thread-local storage." alt="sf::ThreadLocal" shape="rect" coords="0,0,146,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a8c678211d7828d2a8c41cb534422d649"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ThreadLocalPtr.htm#a8c678211d7828d2a8c41cb534422d649">ThreadLocalPtr</a> (T *value=NULL)</td></tr>
<tr class="memdesc:a8c678211d7828d2a8c41cb534422d649"><td class="mdescLeft"> </td><td class="mdescRight">Default constructor. <a href="#a8c678211d7828d2a8c41cb534422d649"></a><br/></td></tr>
<tr class="separator:a8c678211d7828d2a8c41cb534422d649"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aa3bac9a08e8739613961659d10e0fadd"><td class="memItemLeft" align="right" valign="top">T & </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ThreadLocalPtr.htm#aa3bac9a08e8739613961659d10e0fadd">operator*</a> () const </td></tr>
<tr class="memdesc:aa3bac9a08e8739613961659d10e0fadd"><td class="mdescLeft"> </td><td class="mdescRight">Overload of unary operator *. <a href="#aa3bac9a08e8739613961659d10e0fadd"></a><br/></td></tr>
<tr class="separator:aa3bac9a08e8739613961659d10e0fadd"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aa0b559f78929b22cb2585cb2966edfb2"><td class="memItemLeft" align="right" valign="top">T * </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ThreadLocalPtr.htm#aa0b559f78929b22cb2585cb2966edfb2">operator-></a> () const </td></tr>
<tr class="memdesc:aa0b559f78929b22cb2585cb2966edfb2"><td class="mdescLeft"> </td><td class="mdescRight">Overload of operator -> <a href="#aa0b559f78929b22cb2585cb2966edfb2"></a><br/></td></tr>
<tr class="separator:aa0b559f78929b22cb2585cb2966edfb2"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ab4a6a341c26b58f0ed3ef86502bd9572"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ThreadLocalPtr.htm#ab4a6a341c26b58f0ed3ef86502bd9572">operator T *</a> () const </td></tr>
<tr class="memdesc:ab4a6a341c26b58f0ed3ef86502bd9572"><td class="mdescLeft"> </td><td class="mdescRight">Cast operator to implicitely convert the pointer to its raw pointer type (T*) <a href="#ab4a6a341c26b58f0ed3ef86502bd9572"></a><br/></td></tr>
<tr class="separator:ab4a6a341c26b58f0ed3ef86502bd9572"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a14dcf1cdf5f6b3bcdd633014b2b671f5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1ThreadLocalPtr.htm">ThreadLocalPtr</a>< T > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ThreadLocalPtr.htm#a14dcf1cdf5f6b3bcdd633014b2b671f5">operator=</a> (T *value)</td></tr>
<tr class="memdesc:a14dcf1cdf5f6b3bcdd633014b2b671f5"><td class="mdescLeft"> </td><td class="mdescRight">Assignment operator for a raw pointer parameter. <a href="#a14dcf1cdf5f6b3bcdd633014b2b671f5"></a><br/></td></tr>
<tr class="separator:a14dcf1cdf5f6b3bcdd633014b2b671f5"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:a6792a6a808af06f0d13e3ceecf2fc947"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classsf_1_1ThreadLocalPtr.htm">ThreadLocalPtr</a>< T > & </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ThreadLocalPtr.htm#a6792a6a808af06f0d13e3ceecf2fc947">operator=</a> (const <a class="el" href="classsf_1_1ThreadLocalPtr.htm">ThreadLocalPtr</a>< T > &right)</td></tr>
<tr class="memdesc:a6792a6a808af06f0d13e3ceecf2fc947"><td class="mdescLeft"> </td><td class="mdescRight">Assignment operator for a <a class="el" href="classsf_1_1ThreadLocalPtr.htm" title="Pointer to a thread-local variable.">ThreadLocalPtr</a> parameter. <a href="#a6792a6a808af06f0d13e3ceecf2fc947"></a><br/></td></tr>
<tr class="separator:a6792a6a808af06f0d13e3ceecf2fc947"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private Member Functions</h2></td></tr>
<tr class="memitem:ab7e334c83d77644a8e67ee31c3230007"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ThreadLocal.htm#ab7e334c83d77644a8e67ee31c3230007">setValue</a> (void *value)</td></tr>
<tr class="memdesc:ab7e334c83d77644a8e67ee31c3230007"><td class="mdescLeft"> </td><td class="mdescRight">Set the thread-specific value of the variable. <a href="#ab7e334c83d77644a8e67ee31c3230007"></a><br/></td></tr>
<tr class="separator:ab7e334c83d77644a8e67ee31c3230007"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:aef35a39686eac4b6634a6e5605aacfd7"><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="classsf_1_1ThreadLocal.htm#aef35a39686eac4b6634a6e5605aacfd7">getValue</a> () const </td></tr>
<tr class="memdesc:aef35a39686eac4b6634a6e5605aacfd7"><td class="mdescLeft"> </td><td class="mdescRight">Retrieve the thread-specific value of the variable. <a href="#aef35a39686eac4b6634a6e5605aacfd7"></a><br/></td></tr>
<tr class="separator:aef35a39686eac4b6634a6e5605aacfd7"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><h3>template<typename T><br/>
class sf::ThreadLocalPtr< T ></h3>
<p>Pointer to a thread-local variable. </p>
<p><a class="el" href="classsf_1_1ThreadLocalPtr.htm" title="Pointer to a thread-local variable.">sf::ThreadLocalPtr</a> is a type-safe wrapper for storing pointers to thread-local variables.</p>
<p>A thread-local variable holds a different value for each different thread, unlike normal variable that are shared.</p>
<p>Its usage is completely transparent, so that it is similar to manipulating the raw pointer directly (like any smart pointer).</p>
<p>Usage example: </p>
<div class="fragment"><div class="line">MyClass object1;</div>
<div class="line">MyClass object2;</div>
<div class="line"><a class="code" href="classsf_1_1ThreadLocalPtr.htm" title="Pointer to a thread-local variable.">sf::ThreadLocalPtr<MyClass></a> objectPtr;</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> thread1()</div>
<div class="line">{</div>
<div class="line"> objectPtr = &object1; <span class="comment">// doesn't impact thread2</span></div>
<div class="line"> ...</div>
<div class="line">}</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">void</span> thread2()</div>
<div class="line">{</div>
<div class="line"> objectPtr = &object2; <span class="comment">// doesn't impact thread1</span></div>
<div class="line"> ...</div>
<div class="line">}</div>
<div class="line"></div>
<div class="line"><span class="keywordtype">int</span> main()</div>
<div class="line">{</div>
<div class="line"> <span class="comment">// Create and launch the two threads</span></div>
<div class="line"> <a class="code" href="classsf_1_1Thread.htm" title="Utility class to manipulate threads.">sf::Thread</a> t1(&thread1);</div>
<div class="line"> <a class="code" href="classsf_1_1Thread.htm" title="Utility class to manipulate threads.">sf::Thread</a> t2(&thread2);</div>
<div class="line"> t1.launch();</div>
<div class="line"> t2.launch();</div>
<div class="line"></div>
<div class="line"> <span class="keywordflow">return</span> 0;</div>
<div class="line">}</div>
</div><!-- fragment --><p><a class="el" href="classsf_1_1ThreadLocalPtr.htm" title="Pointer to a thread-local variable.">ThreadLocalPtr</a> is designed for internal use; however you can use it if you feel like it fits well your implementation. </p>
<p>Definition at line <a class="el" href="ThreadLocalPtr_8hpp_source.htm#l00041">41</a> of file <a class="el" href="ThreadLocalPtr_8hpp_source.htm">ThreadLocalPtr.hpp</a>.</p>
</div><h2 class="groupheader">Constructor & Destructor Documentation</h2>
<a class="anchor" id="a8c678211d7828d2a8c41cb534422d649"></a>
<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_1ThreadLocalPtr.htm">sf::ThreadLocalPtr</a>< T >::<a class="el" href="classsf_1_1ThreadLocalPtr.htm">ThreadLocalPtr</a> </td>
<td>(</td>
<td class="paramtype">T * </td>
<td class="paramname"><em>value</em> = <code>NULL</code></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Default constructor. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>Optional value to initalize the variable </td></tr>
</table>
</dd>
</dl>
<p>Definition at line <a class="el" href="ThreadLocalPtr_8inl_source.htm#l00030">30</a> of file <a class="el" href="ThreadLocalPtr_8inl_source.htm">ThreadLocalPtr.inl</a>.</p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="ab4a6a341c26b58f0ed3ef86502bd9572"></a>
<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_1ThreadLocalPtr.htm">sf::ThreadLocalPtr</a>< T >::operator 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 pointer to its raw pointer type (T*) </p>
<dl class="section return"><dt>Returns</dt><dd>Pointer to the actual object </dd></dl>
<p>Definition at line <a class="el" href="ThreadLocalPtr_8inl_source.htm#l00054">54</a> of file <a class="el" href="ThreadLocalPtr_8inl_source.htm">ThreadLocalPtr.inl</a>.</p>
</div>
</div>
<a class="anchor" id="aa3bac9a08e8739613961659d10e0fadd"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename T > </div>
<table class="memname">
<tr>
<td class="memname">T & <a class="el" href="classsf_1_1ThreadLocalPtr.htm">sf::ThreadLocalPtr</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="section return"><dt>Returns</dt><dd>Reference to the pointed object </dd></dl>
<p>Definition at line <a class="el" href="ThreadLocalPtr_8inl_source.htm#l00038">38</a> of file <a class="el" href="ThreadLocalPtr_8inl_source.htm">ThreadLocalPtr.inl</a>.</p>
</div>
</div>
<a class="anchor" id="aa0b559f78929b22cb2585cb2966edfb2"></a>
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename T > </div>
<table class="memname">
<tr>
<td class="memname">T * <a class="el" href="classsf_1_1ThreadLocalPtr.htm">sf::ThreadLocalPtr</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="section return"><dt>Returns</dt><dd>Pointed object </dd></dl>
<p>Definition at line <a class="el" href="ThreadLocalPtr_8inl_source.htm#l00046">46</a> of file <a class="el" href="ThreadLocalPtr_8inl_source.htm">ThreadLocalPtr.inl</a>.</p>
</div>
</div>
<a class="anchor" id="a14dcf1cdf5f6b3bcdd633014b2b671f5"></a>
<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_1ThreadLocalPtr.htm">ThreadLocalPtr</a>< T > & <a class="el" href="classsf_1_1ThreadLocalPtr.htm">sf::ThreadLocalPtr</a>< T >::operator= </td>
<td>(</td>
<td class="paramtype">T * </td>
<td class="paramname"><em>value</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Assignment operator for a raw pointer parameter. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">value</td><td>Pointer to assign</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Reference to self </dd></dl>
<p>Definition at line <a class="el" href="ThreadLocalPtr_8inl_source.htm#l00062">62</a> of file <a class="el" href="ThreadLocalPtr_8inl_source.htm">ThreadLocalPtr.inl</a>.</p>
</div>
</div>
<a class="anchor" id="a6792a6a808af06f0d13e3ceecf2fc947"></a>
<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_1ThreadLocalPtr.htm">ThreadLocalPtr</a>< T > & <a class="el" href="classsf_1_1ThreadLocalPtr.htm">sf::ThreadLocalPtr</a>< T >::operator= </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classsf_1_1ThreadLocalPtr.htm">ThreadLocalPtr</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_1ThreadLocalPtr.htm" title="Pointer to a thread-local variable.">ThreadLocalPtr</a> parameter. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">right</td><td><a class="el" href="classsf_1_1ThreadLocalPtr.htm" title="Pointer to a thread-local variable.">ThreadLocalPtr</a> to assign</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Reference to self </dd></dl>
<p>Definition at line <a class="el" href="ThreadLocalPtr_8inl_source.htm#l00071">71</a> of file <a class="el" href="ThreadLocalPtr_8inl_source.htm">ThreadLocalPtr.inl</a>.</p>
</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="ThreadLocalPtr_8hpp_source.htm">ThreadLocalPtr.hpp</a></li>
<li><a class="el" href="ThreadLocalPtr_8inl_source.htm">ThreadLocalPtr.inl</a></li>
</ul>
</div><!-- contents -->
</div>
<div id="footer-container">
<div id="footer">
Copyright � Laurent Gomila ::
</div>
</div>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-41898676-1', 'srchub.org');
ga('send', 'pageview');