Sophie

Sophie

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

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: csRef&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>
<h1>csRef&lt; T &gt; Class Template Reference</h1><!-- doxytag: class="csRef" -->A smart pointer.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="ref_8h-source.html">csutil/ref.h</a>&gt;</code>
<p>

<p>
<a href="classcsRef-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="classcsRef.html#9e60343d6cf44b91d071a61cff000c79">AttachNew</a> (<a class="el" href="classcsPtr.html">csPtr</a>&lt; T &gt; newObj)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assign an object reference created with the new operator to this smart pointer.  <a href="#9e60343d6cf44b91d071a61cff000c79"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsRef.html#5b2b5624a615ef3057beb4246d56a4fe">csRef</a> (<a class="el" href="classcsRef.html">csRef</a> const &amp;other)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Smart pointer copy constructor.  <a href="#5b2b5624a615ef3057beb4246d56a4fe"></a><br></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2">template&lt;class T2&gt; </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classcsRef.html#fa4260c58edc68cb179707d598872e5f">csRef</a> (<a class="el" href="classcsRef.html">csRef</a>&lt; T2 &gt; const &amp;other)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Smart pointer copy constructor from assignment-compatible csRef&lt;T2&gt;.  <a href="#fa4260c58edc68cb179707d598872e5f"></a><br></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2">template&lt;class T2&gt; </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classcsRef.html#3630d650f85228ea819f515d56c65d47">csRef</a> (T2 *newobj)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct a smart pointer from a raw object reference with a compatible type.  <a href="#3630d650f85228ea819f515d56c65d47"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsRef.html#5e4615484affec6f6851156297e50a04">csRef</a> (T *newobj)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct a smart pointer from a raw object reference.  <a href="#5e4615484affec6f6851156297e50a04"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsRef.html#f2644ede8e1cd525215e1581248dbeed">csRef</a> (const <a class="el" href="classcsPtr.html">csPtr</a>&lt; T &gt; &amp;newobj)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct a smart pointer from a <a class="el" href="classcsPtr.html" title="A pointer encapsulator.">csPtr</a>.  <a href="#f2644ede8e1cd525215e1581248dbeed"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsRef.html#27690290149b073a49ff073b5731820a">csRef</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Construct an invalid smart pointer (that is, one pointing at nothing).  <a href="#27690290149b073a49ff073b5731820a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="group__util.html#g91ad9478d81a7aaf2593e8d9c3d06a14">uint</a>&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsRef.html#073a3611f0aa8078e80aea74128e5bc8">GetHash</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return a hash value for this smart pointer.  <a href="#073a3611f0aa8078e80aea74128e5bc8"></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="classcsRef.html#d09064b1a57b00e467a9400f3968b0b1">Invalidate</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Invalidate the smart pointer by setting it to null.  <a href="#d09064b1a57b00e467a9400f3968b0b1"></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="classcsRef.html#620198af96e2f744bab6207d9c546ed8">IsValid</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Smart pointer validity check.  <a href="#620198af96e2f744bab6207d9c546ed8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">T &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsRef.html#3762b3a13eaed1a4451e3c077c2bf4df">operator *</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dereference underlying object.  <a href="#3762b3a13eaed1a4451e3c077c2bf4df"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsRef.html#4c295696fe44e4a8d3ebd4c496e53918">operator T *</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Cast smart pointer to a pointer to the underlying object.  <a href="#4c295696fe44e4a8d3ebd4c496e53918"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">T *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsRef.html#3c998d0bbee906f7a9c73bf64145f3c5">operator-&gt;</a> () const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Dereference underlying object.  <a href="#3c998d0bbee906f7a9c73bf64145f3c5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsRef.html">csRef</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsRef.html#4f7be769d0536f6cf0e2058cff6b60dd">operator=</a> (<a class="el" href="classcsRef.html">csRef</a> const &amp;other)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assign another csRef&lt;&gt; of the same type to this one.  <a href="#4f7be769d0536f6cf0e2058cff6b60dd"></a><br></td></tr>
<tr><td class="memTemplParams" nowrap colspan="2">template&lt;class T2&gt; </td></tr>
<tr><td class="memTemplItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsRef.html">csRef</a> &amp;&nbsp;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classcsRef.html#92165a22a0e93aaf93a92a83698b96aa">operator=</a> (<a class="el" href="classcsRef.html">csRef</a>&lt; T2 &gt; const &amp;other)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assign another assignment-compatible csRef&lt;T2&gt; to this one.  <a href="#92165a22a0e93aaf93a92a83698b96aa"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsRef.html">csRef</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsRef.html#d815a0a58a68346ed410ee98c01acd62">operator=</a> (T *newobj)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assign a raw object reference to this smart pointer.  <a href="#d815a0a58a68346ed410ee98c01acd62"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classcsRef.html">csRef</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsRef.html#c3904da8a2c8113cbd89f049c7052a06">operator=</a> (const <a class="el" href="classcsPtr.html">csPtr</a>&lt; T &gt; &amp;newobj)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Assign a <a class="el" href="classcsPtr.html" title="A pointer encapsulator.">csPtr</a> to a smart pointer.  <a href="#c3904da8a2c8113cbd89f049c7052a06"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsRef.html#7ca758086a6a16d31219ef31c87a28a4">~csRef</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Smart pointer destructor.  <a href="#7ca758086a6a16d31219ef31c87a28a4"></a><br></td></tr>
<tr><td colspan="2"><br><h2>Friends</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classcsRef.html#d6e6480db3c13349078aa4fa9ff3b0ba">operator!=</a> (T *obj, const <a class="el" href="classcsRef.html">csRef</a> &amp;r1)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test if object pointed to by reference is different from obj.  <a href="#d6e6480db3c13349078aa4fa9ff3b0ba"></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="classcsRef.html#4a03d6661e4a719fc551fbd372d7d7ac">operator!=</a> (const <a class="el" href="classcsRef.html">csRef</a> &amp;r1, T *obj)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test if object pointed to by reference is different from obj.  <a href="#4a03d6661e4a719fc551fbd372d7d7ac"></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="classcsRef.html#890a8b4f61f83243a20ac95a7386745f">operator!=</a> (const <a class="el" href="classcsRef.html">csRef</a> &amp;r1, const <a class="el" href="classcsRef.html">csRef</a> &amp;r2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test if the two references point to different object.  <a href="#890a8b4f61f83243a20ac95a7386745f"></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="classcsRef.html#53d2457de239a1a9b0b6761ff462087e">operator&lt;</a> (const <a class="el" href="classcsRef.html">csRef</a> &amp;r1, const <a class="el" href="classcsRef.html">csRef</a> &amp;r2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test the relationship of the addresses of two objects.  <a href="#53d2457de239a1a9b0b6761ff462087e"></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="classcsRef.html#6b81931630878c9b00f1c13067adeb4c">operator==</a> (T *obj, const <a class="el" href="classcsRef.html">csRef</a> &amp;r1)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test if object pointed to by reference is same as obj.  <a href="#6b81931630878c9b00f1c13067adeb4c"></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="classcsRef.html#b6d5932063bae61e7293783c9ebd256f">operator==</a> (const <a class="el" href="classcsRef.html">csRef</a> &amp;r1, T *obj)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test if object pointed to by reference is same as obj.  <a href="#b6d5932063bae61e7293783c9ebd256f"></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="classcsRef.html#051f0dced968aaf8d7af4c59d16b934f">operator==</a> (const <a class="el" href="classcsRef.html">csRef</a> &amp;r1, const <a class="el" href="classcsRef.html">csRef</a> &amp;r2)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Test if the two references point to same object.  <a href="#051f0dced968aaf8d7af4c59d16b934f"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<h3>template&lt;class T&gt;<br>
 class csRef&lt; T &gt;</h3>

A smart pointer. 
<p>
Maintains and correctly manages a reference to a reference-counted object. This template requires only that the object type T implement the methods IncRef() and DecRef(). No other requirements are placed upon T.<p>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>An extended explanation on smart pointers - how they work and what type to use in what scenario - is contained in the User's manual, section "Correctly Using Smart Pointers". </dd></dl>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00133">133</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="27690290149b073a49ff073b5731820a"></a><!-- doxytag: member="csRef::csRef" ref="27690290149b073a49ff073b5731820a" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsRef.html">csRef</a>&lt; T &gt;::<a class="el" href="classcsRef.html">csRef</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>
Construct an invalid smart pointer (that is, one pointing at nothing). 
<p>
Dereferencing or attempting to use the invalid pointer will result in a run-time error, however it is safe to invoke <a class="el" href="classcsRef.html#620198af96e2f744bab6207d9c546ed8" title="Smart pointer validity check.">IsValid()</a>. 
<p>Definition at line <a class="el" href="ref_8h-source.html#l00144">144</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="f2644ede8e1cd525215e1581248dbeed"></a><!-- doxytag: member="csRef::csRef" ref="f2644ede8e1cd525215e1581248dbeed" args="(const csPtr&lt; T &gt; &amp;newobj)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsRef.html">csRef</a>&lt; T &gt;::<a class="el" href="classcsRef.html">csRef</a>           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsPtr.html">csPtr</a>&lt; T &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>newobj</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Construct a smart pointer from a <a class="el" href="classcsPtr.html" title="A pointer encapsulator.">csPtr</a>. 
<p>
Doesn't call IncRef() on the object since it is assumed that the object in <a class="el" href="classcsPtr.html" title="A pointer encapsulator.">csPtr</a> is already IncRef()'ed. 
<p>Definition at line <a class="el" href="ref_8h-source.html#l00151">151</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="5e4615484affec6f6851156297e50a04"></a><!-- doxytag: member="csRef::csRef" ref="5e4615484affec6f6851156297e50a04" args="(T *newobj)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsRef.html">csRef</a>&lt; T &gt;::<a class="el" href="classcsRef.html">csRef</a>           </td>
          <td>(</td>
          <td class="paramtype">T *&nbsp;</td>
          <td class="paramname"> <em>newobj</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Construct a smart pointer from a raw object reference. 
<p>
Calls IncRef() on the object. 
<p>Definition at line <a class="el" href="ref_8h-source.html#l00167">167</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="3630d650f85228ea819f515d56c65d47"></a><!-- doxytag: member="csRef::csRef" ref="3630d650f85228ea819f515d56c65d47" args="(T2 *newobj)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<div class="memtemplate">
template&lt;class T2&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsRef.html">csRef</a>&lt; T &gt;::<a class="el" href="classcsRef.html">csRef</a>           </td>
          <td>(</td>
          <td class="paramtype">T2 *&nbsp;</td>
          <td class="paramname"> <em>newobj</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Construct a smart pointer from a raw object reference with a compatible type. 
<p>
Calls IncRef() on the object. 
<p>Definition at line <a class="el" href="ref_8h-source.html#l00177">177</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="fa4260c58edc68cb179707d598872e5f"></a><!-- doxytag: member="csRef::csRef" ref="fa4260c58edc68cb179707d598872e5f" args="(csRef&lt; T2 &gt; const &amp;other)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<div class="memtemplate">
template&lt;class T2&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsRef.html">csRef</a>&lt; T &gt;::<a class="el" href="classcsRef.html">csRef</a>           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classcsRef.html">csRef</a>&lt; T2 &gt; const &amp;&nbsp;</td>
          <td class="paramname"> <em>other</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Smart pointer copy constructor from assignment-compatible csRef&lt;T2&gt;. 
<p>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00186">186</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="5b2b5624a615ef3057beb4246d56a4fe"></a><!-- doxytag: member="csRef::csRef" ref="5b2b5624a615ef3057beb4246d56a4fe" args="(csRef const &amp;other)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsRef.html">csRef</a>&lt; T &gt;::<a class="el" href="classcsRef.html">csRef</a>           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classcsRef.html">csRef</a>&lt; T &gt; const &amp;&nbsp;</td>
          <td class="paramname"> <em>other</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Smart pointer copy constructor. 
<p>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00194">194</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="7ca758086a6a16d31219ef31c87a28a4"></a><!-- doxytag: member="csRef::~csRef" ref="7ca758086a6a16d31219ef31c87a28a4" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsRef.html">csRef</a>&lt; T &gt;::~<a class="el" href="classcsRef.html">csRef</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>
Smart pointer destructor. 
<p>
Invokes DecRef() upon the underlying object. 
<p>Definition at line <a class="el" href="ref_8h-source.html#l00202">202</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="9e60343d6cf44b91d071a61cff000c79"></a><!-- doxytag: member="csRef::AttachNew" ref="9e60343d6cf44b91d071a61cff000c79" args="(csPtr&lt; T &gt; newObj)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt;::AttachNew           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classcsPtr.html">csPtr</a>&lt; T &gt;&nbsp;</td>
          <td class="paramname"> <em>newObj</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Assign an object reference created with the new operator to this smart pointer. 
<p>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>This function allows you to assign an object pointer created with the <code>new</code> operator to the <a class="el" href="classcsRef.html" title="A smart pointer.">csRef</a> object. Proper usage would be: <div class="fragment"><pre class="fragment"> <a class="code" href="classcsRef.html" title="A smart pointer.">csRef&lt;iEvent&gt;</a> event;
 <span class="keyword">event</span>.AttachNew (<span class="keyword">new</span> <a class="code" href="classcsEvent.html" title="This class represents a system event.">csEvent</a>);
</pre></div> While not recommended, you can also use this function to assign a <a class="el" href="classcsPtr.html" title="A pointer encapsulator.">csPtr</a> object or <a class="el" href="classcsRef.html" title="A smart pointer.">csRef</a> object to the <a class="el" href="classcsRef.html" title="A smart pointer.">csRef</a>. In both of these cases, using AttachNew is equivalent to performing a simple assignment using the <code>=</code> operator. </dd></dl>
<dl class="note" compact><dt><b>Note:</b></dt><dd>Calling this function is equivalent to casting an object to a csPtr&lt;T&gt; and then assigning the csPtr&lt;T&gt; to the <a class="el" href="classcsRef.html" title="A smart pointer.">csRef</a>, as follows: <div class="fragment"><pre class="fragment"> <span class="comment">// Same effect as above code.</span>
 <a class="code" href="classcsRef.html" title="A smart pointer.">csRef&lt;iEvent&gt;</a> <span class="keyword">event</span> = <a class="code" href="classcsPtr.html" title="A pointer encapsulator.">csPtr&lt;iEvent&gt;</a> (<span class="keyword">new</span> csEvent);
</pre></div> </dd></dl>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00282">282</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

<p>Referenced by <a class="el" href="imageautoconvert_8h-source.html#l00051">CS::ImageAutoConvert::ImageAutoConvert()</a>.</p>

</div>
</div><p>
<a class="anchor" name="073a3611f0aa8078e80aea74128e5bc8"></a><!-- doxytag: member="csRef::GetHash" ref="073a3611f0aa8078e80aea74128e5bc8" args="() const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__util.html#g91ad9478d81a7aaf2593e8d9c3d06a14">uint</a> <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt;::GetHash           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return a hash value for this smart pointer. 
<p>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00372">372</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="d09064b1a57b00e467a9400f3968b0b1"></a><!-- doxytag: member="csRef::Invalidate" ref="d09064b1a57b00e467a9400f3968b0b1" args="()" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt;::Invalidate           </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>
Invalidate the smart pointer by setting it to null. 
<p>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00368">368</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="620198af96e2f744bab6207d9c546ed8"></a><!-- doxytag: member="csRef::IsValid" ref="620198af96e2f744bab6207d9c546ed8" args="() const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt;::IsValid           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Smart pointer validity check. 
<p>
Returns true if smart pointer is pointing at an actual object, otherwise returns false. 
<p>Definition at line <a class="el" href="ref_8h-source.html#l00364">364</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

<p>Referenced by <a class="el" href="draw__text_8h-source.html#l00045">csG2DDrawText&lt; Tpixel, Tpixmixer1, Tpixmixer2, Tpixmixer3 &gt;::DrawText()</a>, <a class="el" href="documenthelper_8h-source.html#l00073">CS::DocSystem::Implementation::FilterDocumentNodeIterator&lt; T &gt;::GetNextPosition()</a>, <a class="el" href="shaderprogram_8h-source.html#l00208">csShaderProgram::GetParamFloatVal()</a>, <a class="el" href="shaderprogram_8h-source.html#l00191">csShaderProgram::GetParamTransformVal()</a>, <a class="el" href="shaderprogram_8h-source.html#l00174">csShaderProgram::GetParamVectorVal()</a>, and <a class="el" href="documenthelper_8h-source.html#l00060">CS::DocSystem::Implementation::FilterDocumentNodeIterator&lt; T &gt;::HasNext()</a>.</p>

</div>
</div><p>
<a class="anchor" name="3762b3a13eaed1a4451e3c077c2bf4df"></a><!-- doxytag: member="csRef::operator *" ref="3762b3a13eaed1a4451e3c077c2bf4df" args="() const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">T&amp; <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt;::operator *           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Dereference underlying object. 
<p>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00357">357</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="4c295696fe44e4a8d3ebd4c496e53918"></a><!-- doxytag: member="csRef::operator T *" ref="4c295696fe44e4a8d3ebd4c496e53918" args="() const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsRef.html">csRef</a>&lt; T &gt;::operator T *           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Cast smart pointer to a pointer to the underlying object. 
<p>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00353">353</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="3c998d0bbee906f7a9c73bf64145f3c5"></a><!-- doxytag: member="csRef::operator-&gt;" ref="3c998d0bbee906f7a9c73bf64145f3c5" args="() const " -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">T* <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt;::operator-&gt;           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Dereference underlying object. 
<p>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00349">349</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="4f7be769d0536f6cf0e2058cff6b60dd"></a><!-- doxytag: member="csRef::operator=" ref="4f7be769d0536f6cf0e2058cff6b60dd" args="(csRef const &amp;other)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsRef.html">csRef</a>&amp; <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt;::operator=           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classcsRef.html">csRef</a>&lt; T &gt; const &amp;&nbsp;</td>
          <td class="paramname"> <em>other</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Assign another csRef&lt;&gt; of the same type to this one. 
<p>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00301">301</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="92165a22a0e93aaf93a92a83698b96aa"></a><!-- doxytag: member="csRef::operator=" ref="92165a22a0e93aaf93a92a83698b96aa" args="(csRef&lt; T2 &gt; const &amp;other)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
<div class="memtemplate">
template&lt;class T2&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsRef.html">csRef</a>&amp; <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt;::operator=           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classcsRef.html">csRef</a>&lt; T2 &gt; const &amp;&nbsp;</td>
          <td class="paramname"> <em>other</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Assign another assignment-compatible csRef&lt;T2&gt; to this one. 
<p>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00293">293</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="d815a0a58a68346ed410ee98c01acd62"></a><!-- doxytag: member="csRef::operator=" ref="d815a0a58a68346ed410ee98c01acd62" args="(T *newobj)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsRef.html">csRef</a>&amp; <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt;::operator=           </td>
          <td>(</td>
          <td class="paramtype">T *&nbsp;</td>
          <td class="paramname"> <em>newobj</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Assign a raw object reference to this smart pointer. 
<p>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>This function calls the object's IncRef() method. Because of this you should not assign a reference created with the new operator to a <a class="el" href="classcsRef.html" title="A smart pointer.">csRef</a> object driectly. The following code will produce a memory leak: <div class="fragment"><pre class="fragment"> <a class="code" href="classcsRef.html" title="A smart pointer.">csRef&lt;iEvent&gt;</a> <span class="keyword">event</span> = <span class="keyword">new</span> csEvent;
</pre></div> If you are assigning a new object to a <a class="el" href="classcsRef.html" title="A smart pointer.">csRef</a>, use AttachNew(T* newObj) instead. </dd></dl>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00244">244</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="c3904da8a2c8113cbd89f049c7052a06"></a><!-- doxytag: member="csRef::operator=" ref="c3904da8a2c8113cbd89f049c7052a06" args="(const csPtr&lt; T &gt; &amp;newobj)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classcsRef.html">csRef</a>&amp; <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt;::operator=           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsPtr.html">csPtr</a>&lt; T &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>newobj</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Assign a <a class="el" href="classcsPtr.html" title="A pointer encapsulator.">csPtr</a> to a smart pointer. 
<p>
Doesn't call IncRef() on the object since it is assumed that the object in <a class="el" href="classcsPtr.html" title="A pointer encapsulator.">csPtr</a> is already IncRef()'ed. <dl class="remark" compact><dt><b>Remarks:</b></dt><dd>After this assignment, the csPtr&lt;T&gt; object is invalidated and cannot be used. You should not (and in fact cannot) decref the csPtr&lt;T&gt; after this assignment has been made. </dd></dl>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00216">216</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

<p>Referenced by <a class="el" href="ref_8h-source.html#l00293">csRef&lt; iGraphics2D &gt;::operator=()</a>.</p>

</div>
</div><p>
<hr><h2>Friends And Related Function Documentation</h2>
<a class="anchor" name="d6e6480db3c13349078aa4fa9ff3b0ba"></a><!-- doxytag: member="csRef::operator!=" ref="d6e6480db3c13349078aa4fa9ff3b0ba" args="(T *obj, const csRef &amp;r1)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool operator!=           </td>
          <td>(</td>
          <td class="paramtype">T *&nbsp;</td>
          <td class="paramname"> <em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>r1</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Test if object pointed to by reference is different from obj. 
<p>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00333">333</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="4a03d6661e4a719fc551fbd372d7d7ac"></a><!-- doxytag: member="csRef::operator!=" ref="4a03d6661e4a719fc551fbd372d7d7ac" args="(const csRef &amp;r1, T *obj)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool operator!=           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>r1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T *&nbsp;</td>
          <td class="paramname"> <em>obj</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Test if object pointed to by reference is different from obj. 
<p>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00323">323</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="890a8b4f61f83243a20ac95a7386745f"></a><!-- doxytag: member="csRef::operator!=" ref="890a8b4f61f83243a20ac95a7386745f" args="(const csRef &amp;r1, const csRef &amp;r2)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool operator!=           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>r1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>r2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Test if the two references point to different object. 
<p>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00313">313</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="53d2457de239a1a9b0b6761ff462087e"></a><!-- doxytag: member="csRef::operator&lt;" ref="53d2457de239a1a9b0b6761ff462087e" args="(const csRef &amp;r1, const csRef &amp;r2)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool operator&lt;           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>r1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>r2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Test the relationship of the addresses of two objects. 
<p>
<dl class="remark" compact><dt><b>Remarks:</b></dt><dd>Mainly useful when csRef&lt;&gt; is used as the subject of csComparator&lt;&gt;, which employs operator&lt; for comparisons. </dd></dl>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00342">342</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="6b81931630878c9b00f1c13067adeb4c"></a><!-- doxytag: member="csRef::operator==" ref="6b81931630878c9b00f1c13067adeb4c" args="(T *obj, const csRef &amp;r1)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool operator==           </td>
          <td>(</td>
          <td class="paramtype">T *&nbsp;</td>
          <td class="paramname"> <em>obj</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>r1</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Test if object pointed to by reference is same as obj. 
<p>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00328">328</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="b6d5932063bae61e7293783c9ebd256f"></a><!-- doxytag: member="csRef::operator==" ref="b6d5932063bae61e7293783c9ebd256f" args="(const csRef &amp;r1, T *obj)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool operator==           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>r1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">T *&nbsp;</td>
          <td class="paramname"> <em>obj</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Test if object pointed to by reference is same as obj. 
<p>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00318">318</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="051f0dced968aaf8d7af4c59d16b934f"></a><!-- doxytag: member="csRef::operator==" ref="051f0dced968aaf8d7af4c59d16b934f" args="(const csRef &amp;r1, const csRef &amp;r2)" -->
<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;class T&gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool operator==           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>r1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsRef.html">csRef</a>&lt; T &gt; &amp;&nbsp;</td>
          <td class="paramname"> <em>r2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [friend]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Test if the two references point to same object. 
<p>

<p>Definition at line <a class="el" href="ref_8h-source.html#l00308">308</a> of file <a class="el" href="ref_8h-source.html">ref.h</a>.</p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following file:<ul>
<li>csutil/<a class="el" href="ref_8h-source.html">ref.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>