Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > bad97183153701b09df5fae1052b1c30 > files > 132

crystalspace-doc-1.2.1-5mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Crystal Space 1.2.1: CS::SndSys::Queue&lt; T &gt; Class Template Reference (Crystal Space 1.2.1 Public API Reference)</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="head">
 <tr height="59">
  <td class="head" width="202" valign="bottom" style="padding-left:0;"><a href="http://www.crystalspace3d.org/"><img src="csblur.png" width="236" height="59" alt="CrystalSpace" border="0"></a></td>
  <td class="head"><h2>Public API Reference</h2></td>
 </tr>
 <tr height="11">
  <td colspan="2" class="headshadow" valign="top" style="padding-left:0;"><img src="csblurb.png" width="236" height="11" alt="" border="0"></td>
 </tr>
</table>
<div class="content">
<!-- Generated by Doxygen 1.5.3 -->
<div class="tabs">
  <ul>
    <li><a href="index.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="classes.html"><span>Classes</span></a></li>
    <li><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  </ul>
</div>
<div class="tabs">
  <ul>
    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
    <li><a href="annotated.html"><span>Class&nbsp;List</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="nav">
<a class="el" href="namespaceCS.html">CS</a>::<a class="el" href="namespaceCS_1_1SndSys.html">SndSys</a>::<a class="el" href="classCS_1_1SndSys_1_1Queue.html">Queue</a></div>
<h1>CS::SndSys::Queue&lt; T &gt; Class Template Reference</h1><!-- doxytag: class="CS::SndSys::Queue" --><code>#include &lt;<a class="el" href="queue_8h-source.html">csplugincommon/sndsys/queue.h</a>&gt;</code>
<p>

<p>
<a href="classCS_1_1SndSys_1_1Queue-members.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">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#be5e3c2036214db5c8c5eba8ceb9bfda">Clear</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">T *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#3c9ce58e3e187375c943a2670f88e3ac">DequeueEntry</a> (bool bWait=false)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#6d049ba0d13f55d1b3e12b9485b6e11a">Find</a> (T *data)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compares pointers, and not the objects they point to.  <a href="#6d049ba0d13f55d1b3e12b9485b6e11a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#c61bdd1f8527bbe894277163d85fbe8c">GetClosed</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#3b1c3ada8c5aa3e2ad6c595ffc7b2887">GetDupecheck</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve the status of duplicate pointer checking.  <a href="#3b1c3ada8c5aa3e2ad6c595ffc7b2887"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classCS_1_1SndSys_1_1QueueIterator.html">QueueIterator</a>&lt; T &gt; *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#f5c7873438801b0820c0ebc2571c3e84">GetIterator</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#abd8d5d95c556eb2cbb902b05b45e6de">Length</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Retrieve the number of entries in the queue.  <a href="#abd8d5d95c556eb2cbb902b05b45e6de"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#797658784eb71da7e9376e04c2f048e6">Queue</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classCS_1_1SndSys_1_1Queue.html">Queue</a> construction requires no parameters.  <a href="#797658784eb71da7e9376e04c2f048e6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="namespaceCS_1_1SndSys.html#e0f22d90228350dcd6fbc5acd8589e7c">QueueErrorType</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#6fa11ca09e82a911ee28e85634ddc2aa">QueueEntry</a> (T *pData)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add the specified pointer to the end of the queue.  <a href="#6fa11ca09e82a911ee28e85634ddc2aa"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#8460e64c36abe9eac89b8d7b53278f20">SetClosed</a> (bool Closed)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Close the queue so that no further entries may be added.  <a href="#8460e64c36abe9eac89b8d7b53278f20"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#c45f24a87141b79d3b6d5927f0d5e361">SetDupecheck</a> (bool Check)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Turn on/off duplicate entry pointer checking.  <a href="#c45f24a87141b79d3b6d5927f0d5e361"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="202cd92a38bfa5bcac553cb6663a40c5"></a><!-- doxytag: member="CS::SndSys::Queue::~Queue" ref="202cd92a38bfa5bcac553cb6663a40c5" args="()" -->
&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#202cd92a38bfa5bcac553cb6663a40c5">~Queue</a> ()</td></tr>

<tr><td colspan="2"><br><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">volatile bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#656749073aabb0fba4f7c264a145c820">m_bClosed</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Flag indicating whether new entries may be added to this queue.  <a href="#656749073aabb0fba4f7c264a145c820"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">volatile bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#9203a8b455810d1d786d44dbf5793a73">m_bDupeCheck</a></td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#7ed210a3a0f527877aefdabd8a371de5">m_EntryCount</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Number of entries currently in the queue.  <a href="#7ed210a3a0f527877aefdabd8a371de5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classCS_1_1Threading_1_1MutexImpl.html">CS::Threading::RecursiveMutex</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#e9fb3111698d328d2b8062df4402284f">m_pAccessMutex</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The mutex which restricts access to all queue operations.  <a href="#e9fb3111698d328d2b8062df4402284f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classCS_1_1Threading_1_1Condition.html">CS::Threading::Condition</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#d1026bbc7dc6fb7d51cbcfa085153c84">m_pEntryReadyCondition</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">The condition used for waiting on and signaling availability of entries.  <a href="#d1026bbc7dc6fb7d51cbcfa085153c84"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classCS_1_1SndSys_1_1QEntry.html">QEntry</a>&lt; T &gt; *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#34bdcdf452d4da025e8a9ed4f01907c6">m_pHead</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to the oldest entry in the queue.  <a href="#34bdcdf452d4da025e8a9ed4f01907c6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classCS_1_1SndSys_1_1QEntry.html">QEntry</a>&lt; T &gt; *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#fb8643a7080346f9046b3c3eb3dc53fa">m_pTail</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Pointer to the newest entry in the queue.  <a href="#fb8643a7080346f9046b3c3eb3dc53fa"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8ad2dc581d508c66de7abccf64e7d4cb"></a><!-- doxytag: member="CS::SndSys::Queue::QueueIterator&lt; T &gt;" ref="8ad2dc581d508c66de7abccf64e7d4cb" args="" -->
class&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classCS_1_1SndSys_1_1Queue.html#8ad2dc581d508c66de7abccf64e7d4cb">QueueIterator&lt; T &gt;</a></td></tr>

</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<h3>template&lt;typename T&gt;<br>
 class CS::SndSys::Queue&lt; T &gt;</h3>

A threadsafe, pointer-passing queue (First-In First-Out) implementation for the sound system.<p>
<dl class="warning" compact><dt><b>Warning:</b></dt><dd>csRef&lt;&gt; is not threadsafe, and csPtr&lt;&gt; doesn't let us do anything with the object referenced inside so this class, which is specifically designed to communicate between threads, has no choice but to use raw pointers. If this is used to communicate between threads, the 'feeder' thread should incref the object before passing it into the queue. The 'consumer' thread should NOT touch the refcount unless it's certain that no other thread will be touching the refcount. This makes cleanup ... interesting. One possible method for cleanup is for the 'consumer' thread which implicitly holds a single reference (passed from the 'feeder') to wait for the refcount to reach 1 before releasing it's refcount, since a refcount of 1 means that it should have the only reference and thus should be guaranteed to be the only thread working with the refcount. Another possibility is for the 'consumer' thread to queue this object back to the 'feeder' thread (through another queue), which will perform the decref itself.<p>
If an object passed through this queue is meant to be accessed from multiple threads at once, the object must contain threadsafe methods itself. </dd></dl>

<p>Definition at line <a class="el" href="queue_8h-source.html#l00096">96</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="797658784eb71da7e9376e04c2f048e6"></a><!-- doxytag: member="CS::SndSys::Queue::Queue" ref="797658784eb71da7e9376e04c2f048e6" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCS_1_1SndSys_1_1Queue.html">CS::SndSys::Queue</a>&lt; T &gt;::<a class="el" href="classCS_1_1SndSys_1_1Queue.html">Queue</a>           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
<a class="el" href="classCS_1_1SndSys_1_1Queue.html">Queue</a> construction requires no parameters. 
<p>

<p>Definition at line <a class="el" href="queue_8h-source.html#l00101">101</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="be5e3c2036214db5c8c5eba8ceb9bfda"></a><!-- doxytag: member="CS::SndSys::Queue::Clear" ref="be5e3c2036214db5c8c5eba8ceb9bfda" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classCS_1_1SndSys_1_1Queue.html">CS::SndSys::Queue</a>&lt; T &gt;::Clear           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Clear all entries in the queue.<p>
<dl class="warning" compact><dt><b>Warning:</b></dt><dd>This call will NOT delete the underlying object, or release any reference counts. To clear the queue in a more controlled manner, consider calling Close(true), then fetching each queue entry and handling them as appropriate for your use. </dd></dl>

<p>Definition at line <a class="el" href="queue_8h-source.html#l00118">118</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>

<p>Referenced by <a class="el" href="queue_8h-source.html#l00107">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::~Queue()</a>.</p>

</div>
</div><p>
<a class="anchor" name="3c9ce58e3e187375c943a2670f88e3ac"></a><!-- doxytag: member="CS::SndSys::Queue::DequeueEntry" ref="3c9ce58e3e187375c943a2670f88e3ac" args="(bool bWait=false)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">T* <a class="el" href="classCS_1_1SndSys_1_1Queue.html">CS::SndSys::Queue</a>&lt; T &gt;::DequeueEntry           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>bWait</em> = <code>false</code>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Dequeue an entry from the queue This call can optionally wait for an entry to arrive if the bWait parameter is specified as true.<p>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Even if bWait is specified as true, this function may return 0 Such a situation is possible if: 1) The <a class="el" href="classCS_1_1SndSys_1_1Queue.html">Queue</a> is cleared by destruction or a call to <a class="el" href="classCS_1_1SndSys_1_1Queue.html#be5e3c2036214db5c8c5eba8ceb9bfda">Clear()</a> 2) The condition wait is interrupted - possibly by signal arrival </dd></dl>

<p>Definition at line <a class="el" href="queue_8h-source.html#l00179">179</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="6d049ba0d13f55d1b3e12b9485b6e11a"></a><!-- doxytag: member="CS::SndSys::Queue::Find" ref="6d049ba0d13f55d1b3e12b9485b6e11a" args="(T *data)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classCS_1_1SndSys_1_1Queue.html">CS::SndSys::Queue</a>&lt; T &gt;::Find           </td>
          <td>(</td>
          <td class="paramtype">T *&nbsp;</td>
          <td class="paramname"> <em>data</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Compares pointers, and not the objects they point to. 
<p>

<p>Definition at line <a class="el" href="queue_8h-source.html#l00214">214</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>

<p>Referenced by <a class="el" href="queue_8h-source.html#l00137">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::QueueEntry()</a>.</p>

</div>
</div><p>
<a class="anchor" name="c61bdd1f8527bbe894277163d85fbe8c"></a><!-- doxytag: member="CS::SndSys::Queue::GetClosed" ref="c61bdd1f8527bbe894277163d85fbe8c" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classCS_1_1SndSys_1_1Queue.html">CS::SndSys::Queue</a>&lt; T &gt;::GetClosed           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
This can be used to determine if the queue is closed. Closed queues do not allow further entries to be added. 
<p>Definition at line <a class="el" href="queue_8h-source.html#l00238">238</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="3b1c3ada8c5aa3e2ad6c595ffc7b2887"></a><!-- doxytag: member="CS::SndSys::Queue::GetDupecheck" ref="3b1c3ada8c5aa3e2ad6c595ffc7b2887" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classCS_1_1SndSys_1_1Queue.html">CS::SndSys::Queue</a>&lt; T &gt;::GetDupecheck           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Retrieve the status of duplicate pointer checking. 
<p>

<p>Definition at line <a class="el" href="queue_8h-source.html#l00260">260</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="f5c7873438801b0820c0ebc2571c3e84"></a><!-- doxytag: member="CS::SndSys::Queue::GetIterator" ref="f5c7873438801b0820c0ebc2571c3e84" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCS_1_1SndSys_1_1QueueIterator.html">QueueIterator</a>&lt;T&gt;* <a class="el" href="classCS_1_1SndSys_1_1Queue.html">CS::SndSys::Queue</a>&lt; T &gt;::GetIterator           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Retrieve an iterator over this queue.<p>
<dl class="warning" compact><dt><b>Warning:</b></dt><dd>The provided iterator holds an exclusive-access lock on the entire queue for its lifetime. </dd></dl>

<p>Definition at line <a class="el" href="queue_8h-source.html#l00272">272</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="abd8d5d95c556eb2cbb902b05b45e6de"></a><!-- doxytag: member="CS::SndSys::Queue::Length" ref="abd8d5d95c556eb2cbb902b05b45e6de" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">size_t <a class="el" href="classCS_1_1SndSys_1_1Queue.html">CS::SndSys::Queue</a>&lt; T &gt;::Length           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Retrieve the number of entries in the queue. 
<p>

<p>Definition at line <a class="el" href="queue_8h-source.html#l00211">211</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="6fa11ca09e82a911ee28e85634ddc2aa"></a><!-- doxytag: member="CS::SndSys::Queue::QueueEntry" ref="6fa11ca09e82a911ee28e85634ddc2aa" args="(T *pData)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="namespaceCS_1_1SndSys.html#e0f22d90228350dcd6fbc5acd8589e7c">QueueErrorType</a> <a class="el" href="classCS_1_1SndSys_1_1Queue.html">CS::SndSys::Queue</a>&lt; T &gt;::QueueEntry           </td>
          <td>(</td>
          <td class="paramtype">T *&nbsp;</td>
          <td class="paramname"> <em>pData</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add the specified pointer to the end of the queue. 
<p>

<p>Definition at line <a class="el" href="queue_8h-source.html#l00137">137</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="8460e64c36abe9eac89b8d7b53278f20"></a><!-- doxytag: member="CS::SndSys::Queue::SetClosed" ref="8460e64c36abe9eac89b8d7b53278f20" args="(bool Closed)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classCS_1_1SndSys_1_1Queue.html">CS::SndSys::Queue</a>&lt; T &gt;::SetClosed           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>Closed</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Close the queue so that no further entries may be added. 
<p>

<p>Definition at line <a class="el" href="queue_8h-source.html#l00230">230</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="c45f24a87141b79d3b6d5927f0d5e361"></a><!-- doxytag: member="CS::SndSys::Queue::SetDupecheck" ref="c45f24a87141b79d3b6d5927f0d5e361" args="(bool Check)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classCS_1_1SndSys_1_1Queue.html">CS::SndSys::Queue</a>&lt; T &gt;::SetDupecheck           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>Check</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Turn on/off duplicate entry pointer checking. 
<p>
This is off by default.<p>
<dl class="warning" compact><dt><b>Warning:</b></dt><dd>Turning duplicate entry checking on causes each insert operation to perform a linear search of the queue. </dd></dl>

<p>Definition at line <a class="el" href="queue_8h-source.html#l00253">253</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>

</div>
</div><p>
<hr><h2>Member Data Documentation</h2>
<a class="anchor" name="656749073aabb0fba4f7c264a145c820"></a><!-- doxytag: member="CS::SndSys::Queue::m_bClosed" ref="656749073aabb0fba4f7c264a145c820" args="" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">volatile bool <a class="el" href="classCS_1_1SndSys_1_1Queue.html">CS::SndSys::Queue</a>&lt; T &gt;::<a class="el" href="classCS_1_1SndSys_1_1Queue.html#656749073aabb0fba4f7c264a145c820">m_bClosed</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Flag indicating whether new entries may be added to this queue. 
<p>

<p>Definition at line <a class="el" href="queue_8h-source.html#l00285">285</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>

<p>Referenced by <a class="el" href="queue_8h-source.html#l00238">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::GetClosed()</a>, <a class="el" href="queue_8h-source.html#l00260">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::GetDupecheck()</a>, <a class="el" href="queue_8h-source.html#l00137">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::QueueEntry()</a>, and <a class="el" href="queue_8h-source.html#l00230">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::SetClosed()</a>.</p>

</div>
</div><p>
<a class="anchor" name="9203a8b455810d1d786d44dbf5793a73"></a><!-- doxytag: member="CS::SndSys::Queue::m_bDupeCheck" ref="9203a8b455810d1d786d44dbf5793a73" args="" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">volatile bool <a class="el" href="classCS_1_1SndSys_1_1Queue.html">CS::SndSys::Queue</a>&lt; T &gt;::<a class="el" href="classCS_1_1SndSys_1_1Queue.html#9203a8b455810d1d786d44dbf5793a73">m_bDupeCheck</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Flag indicating whether the same pointer may exist multiple times in this queue. 
<p>Definition at line <a class="el" href="queue_8h-source.html#l00288">288</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>

<p>Referenced by <a class="el" href="queue_8h-source.html#l00137">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::QueueEntry()</a>, and <a class="el" href="queue_8h-source.html#l00253">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::SetDupecheck()</a>.</p>

</div>
</div><p>
<a class="anchor" name="7ed210a3a0f527877aefdabd8a371de5"></a><!-- doxytag: member="CS::SndSys::Queue::m_EntryCount" ref="7ed210a3a0f527877aefdabd8a371de5" args="" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">size_t <a class="el" href="classCS_1_1SndSys_1_1Queue.html">CS::SndSys::Queue</a>&lt; T &gt;::<a class="el" href="classCS_1_1SndSys_1_1Queue.html#7ed210a3a0f527877aefdabd8a371de5">m_EntryCount</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Number of entries currently in the queue. 
<p>

<p>Definition at line <a class="el" href="queue_8h-source.html#l00283">283</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>

<p>Referenced by <a class="el" href="queue_8h-source.html#l00211">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::Length()</a>.</p>

</div>
</div><p>
<a class="anchor" name="e9fb3111698d328d2b8062df4402284f"></a><!-- doxytag: member="CS::SndSys::Queue::m_pAccessMutex" ref="e9fb3111698d328d2b8062df4402284f" args="" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCS_1_1Threading_1_1MutexImpl.html">CS::Threading::RecursiveMutex</a> <a class="el" href="classCS_1_1SndSys_1_1Queue.html">CS::SndSys::Queue</a>&lt; T &gt;::<a class="el" href="classCS_1_1SndSys_1_1Queue.html#e9fb3111698d328d2b8062df4402284f">m_pAccessMutex</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The mutex which restricts access to all queue operations. 
<p>

<p>Definition at line <a class="el" href="queue_8h-source.html#l00294">294</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>

<p>Referenced by <a class="el" href="queue_8h-source.html#l00118">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::Clear()</a>, <a class="el" href="queue_8h-source.html#l00179">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::DequeueEntry()</a>, <a class="el" href="queue_8h-source.html#l00214">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::Find()</a>, <a class="el" href="queue_8h-source.html#l00238">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::GetClosed()</a>, <a class="el" href="queue_8h-source.html#l00260">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::GetDupecheck()</a>, <a class="el" href="queue_8h-source.html#l00137">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::QueueEntry()</a>, <a class="el" href="queue_8h-source.html#l00230">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::SetClosed()</a>, and <a class="el" href="queue_8h-source.html#l00253">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::SetDupecheck()</a>.</p>

</div>
</div><p>
<a class="anchor" name="d1026bbc7dc6fb7d51cbcfa085153c84"></a><!-- doxytag: member="CS::SndSys::Queue::m_pEntryReadyCondition" ref="d1026bbc7dc6fb7d51cbcfa085153c84" args="" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCS_1_1Threading_1_1Condition.html">CS::Threading::Condition</a> <a class="el" href="classCS_1_1SndSys_1_1Queue.html">CS::SndSys::Queue</a>&lt; T &gt;::<a class="el" href="classCS_1_1SndSys_1_1Queue.html#d1026bbc7dc6fb7d51cbcfa085153c84">m_pEntryReadyCondition</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
The condition used for waiting on and signaling availability of entries. 
<p>

<p>Definition at line <a class="el" href="queue_8h-source.html#l00296">296</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>

<p>Referenced by <a class="el" href="queue_8h-source.html#l00118">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::Clear()</a>, <a class="el" href="queue_8h-source.html#l00179">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::DequeueEntry()</a>, and <a class="el" href="queue_8h-source.html#l00137">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::QueueEntry()</a>.</p>

</div>
</div><p>
<a class="anchor" name="34bdcdf452d4da025e8a9ed4f01907c6"></a><!-- doxytag: member="CS::SndSys::Queue::m_pHead" ref="34bdcdf452d4da025e8a9ed4f01907c6" args="" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCS_1_1SndSys_1_1QEntry.html">QEntry</a>&lt;T&gt;* <a class="el" href="classCS_1_1SndSys_1_1Queue.html">CS::SndSys::Queue</a>&lt; T &gt;::<a class="el" href="classCS_1_1SndSys_1_1Queue.html#34bdcdf452d4da025e8a9ed4f01907c6">m_pHead</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Pointer to the oldest entry in the queue. 
<p>

<p>Definition at line <a class="el" href="queue_8h-source.html#l00279">279</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>

<p>Referenced by <a class="el" href="queue_8h-source.html#l00118">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::Clear()</a>, <a class="el" href="queue_8h-source.html#l00179">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::DequeueEntry()</a>, <a class="el" href="queue_8h-source.html#l00214">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::Find()</a>, and <a class="el" href="queue_8h-source.html#l00137">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::QueueEntry()</a>.</p>

</div>
</div><p>
<a class="anchor" name="fb8643a7080346f9046b3c3eb3dc53fa"></a><!-- doxytag: member="CS::SndSys::Queue::m_pTail" ref="fb8643a7080346f9046b3c3eb3dc53fa" args="" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classCS_1_1SndSys_1_1QEntry.html">QEntry</a>&lt;T&gt;* <a class="el" href="classCS_1_1SndSys_1_1Queue.html">CS::SndSys::Queue</a>&lt; T &gt;::<a class="el" href="classCS_1_1SndSys_1_1Queue.html#fb8643a7080346f9046b3c3eb3dc53fa">m_pTail</a><code> [protected]</code>          </td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Pointer to the newest entry in the queue. 
<p>

<p>Definition at line <a class="el" href="queue_8h-source.html#l00281">281</a> of file <a class="el" href="queue_8h-source.html">queue.h</a>.</p>

<p>Referenced by <a class="el" href="queue_8h-source.html#l00118">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::Clear()</a>, <a class="el" href="queue_8h-source.html#l00179">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::DequeueEntry()</a>, and <a class="el" href="queue_8h-source.html#l00137">CS::SndSys::Queue&lt; CS::SndSys::SndSysBasicStream::StreamNotificationEvent &gt;::QueueEntry()</a>.</p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li>csplugincommon/sndsys/<a class="el" href="queue_8h-source.html">queue.h</a></ul>
<hr size="1"><address><small>Generated for Crystal Space 1.2.1 by 
<a href="http://www.doxygen.org/index.html">doxygen</a> 1.5.3 
</small></address> </div></body> </html>