1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Loki: Loki::LockingPtr< SharedObject, LockingPolicy, ConstPolicy > Class Template Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.8 -->
<div class="navigation" id="top">
<div class="tabs">
<ul>
<li><a href="main.html"><span>Main Page</span></a></li>
<li><a href="modules.html"><span>Modules</span></a></li>
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
<li class="current"><a href="annotated.html"><span>Classes</span></a></li>
<li><a href="files.html"><span>Files</span></a></li>
<li>
<form action="search.php" method="get">
<table cellspacing="0" cellpadding="0" border="0">
<tr>
<td><label> <u>S</u>earch for </label></td>
<td><input type="text" name="query" value="" size="20" accesskey="s"/></td>
</tr>
</table>
</form>
</li>
</ul>
</div>
<div class="tabs">
<ul>
<li><a href="annotated.html"><span>Class List</span></a></li>
<li><a href="classes.html"><span>Class Index</span></a></li>
<li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li>
<li><a href="functions.html"><span>Class Members</span></a></li>
</ul>
</div>
<div class="navpath"><a class="el" href="a00192.html">Loki</a>::<a class="el" href="a00077.html">LockingPtr</a>
</div>
</div>
<div class="contents">
<h1>Loki::LockingPtr< SharedObject, LockingPolicy, ConstPolicy > Class Template Reference</h1><!-- doxytag: class="Loki::LockingPtr" --><code>#include <LockingPtr.h></code>
<p>
<p>
<a href="a00341.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#9d430a6e7f83dfed1ed5f8111b6826ca">LockingPtr</a> (volatile ConstOrNotType &object, LockingPolicy &mutex)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#e4ae5d4ed12dbcac9fffd8241dd1cc2b">LockingPtr</a> (Pair lockpair)</td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="72ca595078f8f910966752d573267eed"></a><!-- doxytag: member="Loki::LockingPtr::~LockingPtr" ref="72ca595078f8f910966752d573267eed" args="()" -->
</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#72ca595078f8f910966752d573267eed">~LockingPtr</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Destructor unlocks the mutex. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1afb02c9b36189cec222bb0fe5d49471"></a><!-- doxytag: member="Loki::LockingPtr::operator*" ref="1afb02c9b36189cec222bb0fe5d49471" args="()" -->
ConstOrNotType & </td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#1afb02c9b36189cec222bb0fe5d49471">operator*</a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Star-operator dereferences pointer. <br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d717c6fad1cc209cfbd04afb68717824"></a><!-- doxytag: member="Loki::LockingPtr::operator->" ref="d717c6fad1cc209cfbd04afb68717824" args="()" -->
ConstOrNotType * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#d717c6fad1cc209cfbd04afb68717824">operator-></a> ()</td></tr>
<tr><td class="mdescLeft"> </td><td class="mdescRight">Point-operator returns pointer to object. <br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<h3>template<typename SharedObject, typename LockingPolicy = LOKI_DEFAULT_MUTEX, template< class > class ConstPolicy = LOKI_DEFAULT_CONSTNESS><br>
class Loki::LockingPtr< SharedObject, LockingPolicy, ConstPolicy ></h3>
Locks a volatile object and casts away volatility so that the object can be safely used in a single-threaded region of code. Original version of <a class="el" href="a00077.html">LockingPtr</a> had only one template - for the shared object, but not the mutex type. This version allows users to specify a the mutex type as a LockingPolicy class. The only requirements for a LockingPolicy class are to provide Lock and Unlock methods. <hr><h2>Constructor & Destructor Documentation</h2>
<a class="anchor" name="9d430a6e7f83dfed1ed5f8111b6826ca"></a><!-- doxytag: member="Loki::LockingPtr::LockingPtr" ref="9d430a6e7f83dfed1ed5f8111b6826ca" args="(volatile ConstOrNotType &object, LockingPolicy &mutex)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename SharedObject , typename LockingPolicy = LOKI_DEFAULT_MUTEX, template< class > class ConstPolicy = LOKI_DEFAULT_CONSTNESS> </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00077.html">Loki::LockingPtr</a>< SharedObject, LockingPolicy, ConstPolicy >::<a class="el" href="a00077.html">LockingPtr</a> </td>
<td>(</td>
<td class="paramtype">volatile ConstOrNotType & </td>
<td class="paramname"> <em>object</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">LockingPolicy & </td>
<td class="paramname"> <em>mutex</em></td><td> </td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td><td><code> [inline]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Constructor locks mutex associated with an object. <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>object</em> </td><td>Reference to object. </td></tr>
<tr><td valign="top"></td><td valign="top"><em>mutex</em> </td><td><a class="el" href="a00081.html">Mutex</a> used to control thread access to object. </td></tr>
</table>
</dl>
</div>
</div><p>
<a class="anchor" name="e4ae5d4ed12dbcac9fffd8241dd1cc2b"></a><!-- doxytag: member="Loki::LockingPtr::LockingPtr" ref="e4ae5d4ed12dbcac9fffd8241dd1cc2b" args="(Pair lockpair)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template<typename SharedObject , typename LockingPolicy = LOKI_DEFAULT_MUTEX, template< class > class ConstPolicy = LOKI_DEFAULT_CONSTNESS> </div>
<table class="memname">
<tr>
<td class="memname"><a class="el" href="a00077.html">Loki::LockingPtr</a>< SharedObject, LockingPolicy, ConstPolicy >::<a class="el" href="a00077.html">LockingPtr</a> </td>
<td>(</td>
<td class="paramtype">Pair </td>
<td class="paramname"> <em>lockpair</em> </td>
<td> ) </td>
<td><code> [inline]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>
Constructor locks mutex associated with an object. <dl compact><dt><b>Parameters:</b></dt><dd>
<table border="0" cellspacing="2" cellpadding="0">
<tr><td valign="top"></td><td valign="top"><em>lockpair</em> </td><td>a std::pair of pointers to the object and the mutex </td></tr>
</table>
</dl>
</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li>LockingPtr.h</ul>
</div>
<hr size="1"><address style="text-align: right;"><small>Generated on Thu Jan 29 18:51:43 2009 for Loki by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.8 </small></address>
</body>
</html>
|