Click here to Skip to main content
15,896,526 members
Articles / Desktop Programming / MFC

Portable thread-based garbage collection library, for C++

Rate me:
Please Sign up or sign in to vote.
4.47/5 (6 votes)
19 May 20065 min read 31.3K   331   21  
a description of LibGC, a portable thread-based garbage collection library for C++
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>LibGC: libgc::weak_ptr&lt; weak_array&lt; T &gt; * &gt; Class Template Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.4.4 -->
<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a></div>
<div class="nav">
<b>libgc</b>::<a class="el" href="classlibgc_1_1weak__ptr_3_01weak__array_3_01_t_01_4_01_5_01_4.html">weak_ptr&lt; weak_array&lt; T &gt; * &gt;</a></div>
<h1>libgc::weak_ptr&lt; weak_array&lt; T &gt; * &gt; Class Template Reference</h1><!-- doxytag: class="libgc::weak_ptr&lt; weak_array&lt; T &gt; * &gt;" --><!-- doxytag: inherits="libgc::basic_ptr_typed&lt; weak_array&lt; T * &gt; &gt;" --><p>Inheritance diagram for libgc::weak_ptr&lt; weak_array&lt; T &gt; * &gt;:
<p><center><img src="classlibgc_1_1weak__ptr_3_01weak__array_3_01_t_01_4_01_5_01_4.png" usemap="#libgc::weak_ptr< weak_array< T > * >_map" border="0" alt=""></center>
<map name="libgc::weak_ptr< weak_array< T > * >_map">
<area href="classlibgc_1_1basic__ptr__typed.html" alt="libgc::basic_ptr_typed< weak_array< T * > >" shape="rect" coords="0,112,269,136">
<area href="classlibgc_1_1basic__ptr.html" alt="libgc::basic_ptr" shape="rect" coords="0,56,269,80">
<area href="classlibgc_1_1gc__ptr.html" alt="libgc::gc_ptr" shape="rect" coords="0,0,269,24">
</map>
<a href="classlibgc_1_1weak__ptr_3_01weak__array_3_01_t_01_4_01_5_01_4-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
<h3>template&lt;class T&gt;<br>
 class libgc::weak_ptr&lt; weak_array&lt; T &gt; * &gt;</h3>

a global/stack weak pointer class for weak arrays. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>T</em>&nbsp;</td><td>type of object stored in the pointer.</td></tr>
  </table>
</dl>

<p>
<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="classlibgc_1_1weak__ptr_3_01weak__array_3_01_t_01_4_01_5_01_4.html#a0">weak_ptr</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">the default constructor.  <a href="#a0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibgc_1_1weak__ptr_3_01weak__array_3_01_t_01_4_01_5_01_4.html#a1">weak_ptr</a> (<a class="el" href="classlibgc_1_1weak__array.html">weak_array</a>&lt; T * &gt; *val)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">constructor from value.  <a href="#a1"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibgc_1_1weak__ptr_3_01weak__array_3_01_t_01_4_01_5_01_4.html#a2">weak_ptr</a> (const <a class="el" href="classlibgc_1_1weak__ptr.html">weak_ptr</a>&lt; <a class="el" href="classlibgc_1_1weak__array.html">weak_array</a>&lt; T * &gt; &gt; &amp;obj)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">the copy constructor.  <a href="#a2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibgc_1_1weak__ptr_3_01weak__array_3_01_t_01_4_01_5_01_4.html#a3">~weak_ptr</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">the destructor.  <a href="#a3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">const <a class="el" href="classlibgc_1_1weak__array.html">weak_array</a>&lt; T &gt; &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibgc_1_1weak__ptr_3_01weak__array_3_01_t_01_4_01_5_01_4.html#a4">operator[]</a> (size_t index) const </td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classlibgc_1_1weak__array.html">weak_array</a> element access by index; const version.  <a href="#a4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="el" href="classlibgc_1_1weak__array.html">weak_array</a>&lt; T &gt; &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlibgc_1_1weak__ptr_3_01weak__array_3_01_t_01_4_01_5_01_4.html#a5">operator[]</a> (size_t index)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight"><a class="el" href="classlibgc_1_1weak__array.html">weak_array</a> element access by index.  <a href="#a5"></a><br></td></tr>
</table>
<hr><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" name="a3"></a><!-- doxytag: member="libgc::weak_ptr&lt; weak_array&lt; T &gt; * &gt;::~weak_ptr" ref="a3" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="mdPrefix" colspan="4">
template&lt;class T&gt; </td>
        </tr>
        <tr>
          <td class="md" nowrap valign="top"><a class="el" href="classlibgc_1_1weak__ptr.html">libgc::weak_ptr</a>&lt; <a class="el" href="classlibgc_1_1weak__array.html">weak_array</a>&lt; T &gt; * &gt;::~<a class="el" href="classlibgc_1_1weak__ptr.html">weak_ptr</a>           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
the destructor. 
<p>
The pointer is unregistered from the current collector.    </td>
  </tr>
</table>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="a5"></a><!-- doxytag: member="libgc::weak_ptr&lt; weak_array&lt; T &gt; * &gt;::operator[]" ref="a5" args="(size_t index)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="mdPrefix" colspan="4">
template&lt;class T&gt; </td>
        </tr>
        <tr>
          <td class="md" nowrap valign="top"><a class="el" href="classlibgc_1_1weak__array.html">weak_array</a>&lt;T&gt;&amp; <a class="el" href="classlibgc_1_1weak__ptr.html">libgc::weak_ptr</a>&lt; <a class="el" href="classlibgc_1_1weak__array.html">weak_array</a>&lt; T &gt; * &gt;::operator[]           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">size_t&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>index</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<a class="el" href="classlibgc_1_1weak__array.html">weak_array</a> element access by index. 
<p>
Array boundaries check is not done. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>index</em>&nbsp;</td><td>element index. </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>reference to <a class="el" href="classlibgc_1_1weak__array.html">weak_array</a> element.</dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="a4"></a><!-- doxytag: member="libgc::weak_ptr&lt; weak_array&lt; T &gt; * &gt;::operator[]" ref="a4" args="(size_t index) const " --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="mdPrefix" colspan="4">
template&lt;class T&gt; </td>
        </tr>
        <tr>
          <td class="md" nowrap valign="top">const <a class="el" href="classlibgc_1_1weak__array.html">weak_array</a>&lt;T&gt;&amp; <a class="el" href="classlibgc_1_1weak__ptr.html">libgc::weak_ptr</a>&lt; <a class="el" href="classlibgc_1_1weak__array.html">weak_array</a>&lt; T &gt; * &gt;::operator[]           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">size_t&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>index</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const</td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
<a class="el" href="classlibgc_1_1weak__array.html">weak_array</a> element access by index; const version. 
<p>
Array boundaries check is not done. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>index</em>&nbsp;</td><td>element index. </td></tr>
  </table>
</dl>
<dl compact><dt><b>Returns:</b></dt><dd>const reference to <a class="el" href="classlibgc_1_1weak__array.html">weak_array</a> element.</dd></dl>
    </td>
  </tr>
</table>
<a class="anchor" name="a2"></a><!-- doxytag: member="libgc::weak_ptr&lt; weak_array&lt; T &gt; * &gt;::weak_ptr" ref="a2" args="(const weak_ptr&lt; weak_array&lt; T * &gt; &gt; &amp;obj)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="mdPrefix" colspan="4">
template&lt;class T&gt; </td>
        </tr>
        <tr>
          <td class="md" nowrap valign="top"><a class="el" href="classlibgc_1_1weak__ptr.html">libgc::weak_ptr</a>&lt; <a class="el" href="classlibgc_1_1weak__array.html">weak_array</a>&lt; T &gt; * &gt;::<a class="el" href="classlibgc_1_1weak__ptr.html">weak_ptr</a>           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">const <a class="el" href="classlibgc_1_1weak__ptr.html">weak_ptr</a>&lt; <a class="el" href="classlibgc_1_1weak__array.html">weak_array</a>&lt; T * &gt; &gt; &amp;&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>obj</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
the copy constructor. 
<p>
The pointer is registered as a root pointer in the current collector. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>obj</em>&nbsp;</td><td>source object.</td></tr>
  </table>
</dl>
    </td>
  </tr>
</table>
<a class="anchor" name="a1"></a><!-- doxytag: member="libgc::weak_ptr&lt; weak_array&lt; T &gt; * &gt;::weak_ptr" ref="a1" args="(weak_array&lt; T * &gt; *val)" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="mdPrefix" colspan="4">
template&lt;class T&gt; </td>
        </tr>
        <tr>
          <td class="md" nowrap valign="top"><a class="el" href="classlibgc_1_1weak__ptr.html">libgc::weak_ptr</a>&lt; <a class="el" href="classlibgc_1_1weak__array.html">weak_array</a>&lt; T &gt; * &gt;::<a class="el" href="classlibgc_1_1weak__ptr.html">weak_ptr</a>           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top"><a class="el" href="classlibgc_1_1weak__array.html">weak_array</a>&lt; T * &gt; *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>val</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
constructor from value. 
<p>
The pointer is registered as a root pointer in the current collector. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>val</em>&nbsp;</td><td>initial pointer value.</td></tr>
  </table>
</dl>
    </td>
  </tr>
</table>
<a class="anchor" name="a0"></a><!-- doxytag: member="libgc::weak_ptr&lt; weak_array&lt; T &gt; * &gt;::weak_ptr" ref="a0" args="()" --><p>
<table class="mdTable" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="mdPrefix" colspan="4">
template&lt;class T&gt; </td>
        </tr>
        <tr>
          <td class="md" nowrap valign="top"><a class="el" href="classlibgc_1_1weak__ptr.html">libgc::weak_ptr</a>&lt; <a class="el" href="classlibgc_1_1weak__array.html">weak_array</a>&lt; T &gt; * &gt;::<a class="el" href="classlibgc_1_1weak__ptr.html">weak_ptr</a>           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing="5" cellpadding="0" border="0">
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
the default constructor. 
<p>
The pointer is registered as a root pointer in the current collector.    </td>
  </tr>
</table>
<hr size="1"><address style="align: right;"><small>Generated on Sat May 20 03:27:51 2006 for LibGC by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address>
</body>
</html>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Software Developer (Senior)
Greece Greece
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions