<!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> TemplateOscl_DefAllocWithRefCounter&lt; DefAlloc &gt; class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.18 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="modules.html">Modules</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; <a class="qindex" href="globals.html">Globals</a> &nbsp; </center>
<hr><h1>Oscl_DefAllocWithRefCounter&lt; DefAlloc &gt; Class Template Reference<br>
<small>
[<a class="el" href="group__osclbase.html">OSCL Base</a>]</small>
</h1><code>#include &lt;<a class="el" href="oscl__refcounter_8h-source.html">oscl_refcounter.h</a>&gt;</code>
<p>
<p>Inheritance diagram for Oscl_DefAllocWithRefCounter&lt; DefAlloc &gt;:
<p><center><img src="classOscl__DefAllocWithRefCounter.png" usemap="#Oscl_DefAllocWithRefCounter< DefAlloc >_map" border="0" alt=""></center>
<map name="Oscl_DefAllocWithRefCounter< DefAlloc >_map">
<area href="classOsclRefCounter.html" alt="OsclRefCounter" shape="rect" coords="0,0,255,24">
</map>
<table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="classOscl__DefAllocWithRefCounter.html#a0">Delete</a> ()</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="classOscl__DefAllocWithRefCounter.html#a1">addRef</a> ()</td></tr>
<tr><td nowrap align=right valign=top>void&nbsp;</td><td valign=bottom><a class="el" href="classOscl__DefAllocWithRefCounter.html#a2">removeRef</a> ()</td></tr>
<tr><td nowrap align=right valign=top>uint32&nbsp;</td><td valign=bottom><a class="el" href="classOscl__DefAllocWithRefCounter.html#a3">getCount</a> ()</td></tr>
<tr><td colspan=2><br><h2>Static Public Methods</h2></td></tr>
<tr><td nowrap align=right valign=top>Oscl_DefAllocWithRefCounter *&nbsp;</td><td valign=bottom><a class="el" href="classOscl__DefAllocWithRefCounter.html#d0">New</a> ()</td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
<h3>template&lt;class DefAlloc&gt;<br>
 class Oscl_DefAllocWithRefCounter&lt; DefAlloc &gt;</h3>

Implementation of an <a class="el" href="classOscl__DefAlloc.html">Oscl_DefAlloc</a> class with a built-in ref counter. 
<p>
<hr><h2>Member Function Documentation</h2>
<a name="a1" doxytag="Oscl_DefAllocWithRefCounter::addRef"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" colspan="4">
template&lt;class DefAlloc&gt; </td>
        </tr>
        <tr>
          <td class="md" nowrap valign="top"> void Oscl_DefAllocWithRefCounter&lt; DefAlloc &gt;::addRef </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp;          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap><code> [inline, virtual]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Add to the reference count 
<p>
Implements <a class="el" href="classOsclRefCounter.html#a0">OsclRefCounter</a>.    </td>
  </tr>
</table>
<a name="a0" doxytag="Oscl_DefAllocWithRefCounter::Delete"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" colspan="4">
template&lt;class DefAlloc&gt; </td>
        </tr>
        <tr>
          <td class="md" nowrap valign="top"> void Oscl_DefAllocWithRefCounter&lt; DefAlloc &gt;::Delete </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp;          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap><code> [inline]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Delete object     </td>
  </tr>
</table>
<a name="a3" doxytag="Oscl_DefAllocWithRefCounter::getCount"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" colspan="4">
template&lt;class DefAlloc&gt; </td>
        </tr>
        <tr>
          <td class="md" nowrap valign="top"> uint32 Oscl_DefAllocWithRefCounter&lt; DefAlloc &gt;::getCount </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp;          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap><code> [inline, virtual]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Gets the current number of references 
<p>
Implements <a class="el" href="classOsclRefCounter.html#a2">OsclRefCounter</a>.    </td>
  </tr>
</table>
<a name="d0" doxytag="Oscl_DefAllocWithRefCounter::New"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" colspan="4">
template&lt;class DefAlloc&gt; </td>
        </tr>
        <tr>
          <td class="md" nowrap valign="top"> Oscl_DefAllocWithRefCounter* Oscl_DefAllocWithRefCounter&lt; DefAlloc &gt;::New </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp;          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap><code> [inline, static]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Create object     </td>
  </tr>
</table>
<a name="a2" doxytag="Oscl_DefAllocWithRefCounter::removeRef"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
  <tr>
    <td class="md">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" colspan="4">
template&lt;class DefAlloc&gt; </td>
        </tr>
        <tr>
          <td class="md" nowrap valign="top"> void Oscl_DefAllocWithRefCounter&lt; DefAlloc &gt;::removeRef </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>&nbsp;          </td>
          <td class="md" valign="top">)&nbsp;</td>
          <td class="md" nowrap><code> [inline, virtual]</code></td>
        </tr>

      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
Delete from reference count 
<p>
Implements <a class="el" href="classOsclRefCounter.html#a1">OsclRefCounter</a>.    </td>
  </tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="oscl__refcounter_8h-source.html">oscl_refcounter.h</a></ul>
<hr size="1"><img src="pvlogo_small.jpg"><address style="align: right;"><small>OSCL API</small>
<address style="align: left;"><small>Posting Version: OPENCORE_20090310 </small>
</small></address>
</body>
</html>
