File: a00077.html

package info (click to toggle)
libloki 0.1.7-3
  • links: PTS
  • area: main
  • in suites: buster, jessie, jessie-kfreebsd, stretch, wheezy
  • size: 6,540 kB
  • ctags: 6,905
  • sloc: cpp: 30,476; ansic: 1,974; makefile: 417; php: 316; perl: 108
file content (140 lines) | stat: -rwxr-xr-x 8,202 bytes parent folder | download | duplicates (5)
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&lt; SharedObject, LockingPolicy, ConstPolicy &gt; 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&nbsp;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>&nbsp;<u>S</u>earch&nbsp;for&nbsp;</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&nbsp;List</span></a></li>
      <li><a href="classes.html"><span>Class&nbsp;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;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&lt; SharedObject, LockingPolicy, ConstPolicy &gt; Class Template Reference</h1><!-- doxytag: class="Loki::LockingPtr" --><code>#include &lt;LockingPtr.h&gt;</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">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#9d430a6e7f83dfed1ed5f8111b6826ca">LockingPtr</a> (volatile ConstOrNotType &amp;object, LockingPolicy &amp;mutex)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</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="()" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#72ca595078f8f910966752d573267eed">~LockingPtr</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</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 &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#1afb02c9b36189cec222bb0fe5d49471">operator*</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</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&#45;&gt;" ref="d717c6fad1cc209cfbd04afb68717824" args="()" -->
ConstOrNotType *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="a00077.html#d717c6fad1cc209cfbd04afb68717824">operator-&gt;</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</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&lt;typename SharedObject, typename LockingPolicy = LOKI_DEFAULT_MUTEX, template&lt; class &gt; class ConstPolicy = LOKI_DEFAULT_CONSTNESS&gt;<br>
 class Loki::LockingPtr&lt; SharedObject, LockingPolicy, ConstPolicy &gt;</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 &amp; Destructor Documentation</h2>
<a class="anchor" name="9d430a6e7f83dfed1ed5f8111b6826ca"></a><!-- doxytag: member="Loki::LockingPtr::LockingPtr" ref="9d430a6e7f83dfed1ed5f8111b6826ca" args="(volatile ConstOrNotType &amp;object, LockingPolicy &amp;mutex)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename SharedObject , typename LockingPolicy  = LOKI_DEFAULT_MUTEX, template&lt; class &gt; class ConstPolicy = LOKI_DEFAULT_CONSTNESS&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00077.html">Loki::LockingPtr</a>&lt; SharedObject, LockingPolicy, ConstPolicy &gt;::<a class="el" href="a00077.html">LockingPtr</a>           </td>
          <td>(</td>
          <td class="paramtype">volatile ConstOrNotType &amp;&nbsp;</td>
          <td class="paramname"> <em>object</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">LockingPolicy &amp;&nbsp;</td>
          <td class="paramname"> <em>mutex</em></td><td>&nbsp;</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>&nbsp;</td><td>Reference to object. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mutex</em>&nbsp;</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&lt;typename SharedObject , typename LockingPolicy  = LOKI_DEFAULT_MUTEX, template&lt; class &gt; class ConstPolicy = LOKI_DEFAULT_CONSTNESS&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="a00077.html">Loki::LockingPtr</a>&lt; SharedObject, LockingPolicy, ConstPolicy &gt;::<a class="el" href="a00077.html">LockingPtr</a>           </td>
          <td>(</td>
          <td class="paramtype">Pair&nbsp;</td>
          <td class="paramname"> <em>lockpair</em>          </td>
          <td>&nbsp;)&nbsp;</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>&nbsp;</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&nbsp;
<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>