<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>ucommon: ucommon::auto_object Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.6.3 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="main.html"><span>Main Page</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="annotated.html"><span>Data Structures</span></a></li> <li><a href="classes.html"><span>Data Structure Index</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Data Fields</span></a></li> </ul> </div> <div class="navpath"><a class="el" href="a00208.html">ucommon</a>::<a class="el" href="a00021.html">auto_object</a> </div> </div> <div class="contents"> <h1>ucommon::auto_object Class Reference</h1><!-- doxytag: class="ucommon::auto_object" --> <p>A general purpose smart pointer helper class. <a href="#_details">More...</a></p> <p><code>#include <<a class="el" href="a00192_source.html">object.h</a>></code></p> <div class="dynheader"> Collaboration diagram for ucommon::auto_object:</div> <div class="dynsection"> <div class="center"><img src="a00339.png" border="0" usemap="#ucommon_1_1auto__object_coll__map" alt="Collaboration graph"/></div> <map name="ucommon_1_1auto__object_coll__map" id="ucommon_1_1auto__object_coll__map"> <area shape="rect" id="node2" href="a00095.html" title="A common base class for all managed objects." alt="" coords="5,5,256,32"/></map> <center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div> <table border="0" cellpadding="0" cellspacing="0"> <tr><td colspan="2"><h2>Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#a299d817bede8764904988e6f4bd8821f">auto_object</a> (const <a class="el" href="a00021.html">auto_object</a> &<a class="el" href="a00110.html">pointer</a>)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Construct an auto-pointer as a copy of another pointer. <a href="#a299d817bede8764904988e6f4bd8821f"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#ab9882bc9a0f63c823280cb5ae90d5176">auto_object</a> (<a class="el" href="a00095.html">ObjectProtocol</a> *object)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Construct an auto-pointer referencing an existing object. <a href="#ab9882bc9a0f63c823280cb5ae90d5176"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#a0f4bdc921fd0e6cc7062d940fb6ec568">operator bool</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Test if the pointer is referencing an object. <a href="#a0f4bdc921fd0e6cc7062d940fb6ec568"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#a420f2bc3e0361aceb6b999b835cfcc23">operator!</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Test if the pointer is not set. <a href="#a420f2bc3e0361aceb6b999b835cfcc23"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#a74c06dc2b5ed4c9bbaf1575d95d7f8df">operator!=</a> (<a class="el" href="a00095.html">ObjectProtocol</a> *object) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">test if the object being referenced is not the same as the object we specify. <a href="#a74c06dc2b5ed4c9bbaf1575d95d7f8df"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#aae31f92bc054d6ea65149c015fe4561f">operator=</a> (<a class="el" href="a00095.html">ObjectProtocol</a> *object)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set our pointer to a specific object. <a href="#aae31f92bc054d6ea65149c015fe4561f"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#a69db0091d2d958d5e65881d4bb7778e8">operator==</a> (<a class="el" href="a00095.html">ObjectProtocol</a> *object) const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">test if the object being referenced is the same as the object we specify. <a href="#a69db0091d2d958d5e65881d4bb7778e8"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#ad8d94e748d3d9924e326157d7cdc58f3">release</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Manually release the pointer. <a href="#ad8d94e748d3d9924e326157d7cdc58f3"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00021.html#aa73054012eefba083512da2e20e5ad21">~auto_object</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Delete auto pointer. <a href="#aa73054012eefba083512da2e20e5ad21"></a><br/></td></tr> <tr><td colspan="2"><h2>Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8b2fe648ed8e72219ce017a1764fa44b"></a><!-- doxytag: member="ucommon::auto_object::object" ref="a8b2fe648ed8e72219ce017a1764fa44b" args="" --> <a class="el" href="a00095.html">ObjectProtocol</a> * </td><td class="memItemRight" valign="bottom"><b>object</b></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>A general purpose smart pointer helper class. </p> <p>This is particularly useful in conjunction with reference counted objects which can be managed and automatically removed from the heap when they are no longer being referenced by a smart pointer. The smart pointer itself would normally be constructed and initialized as an auto variable in a method call, and will dereference the object when the pointer falls out of scope. This is actually a helper class for the typed pointer template. </p> <dl class="author"><dt><b>Author:</b></dt><dd>David Sugar <<a href="mailto:dyfet@gnutelephony.org">dyfet@gnutelephony.org</a>> </dd></dl> <p>Definition at line <a class="el" href="a00192_source.html#l00165">165</a> of file <a class="el" href="a00192_source.html">object.h</a>.</p> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="ab9882bc9a0f63c823280cb5ae90d5176"></a><!-- doxytag: member="ucommon::auto_object::auto_object" ref="ab9882bc9a0f63c823280cb5ae90d5176" args="(ObjectProtocol *object)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">ucommon::auto_object::auto_object </td> <td>(</td> <td class="paramtype"><a class="el" href="a00095.html">ObjectProtocol</a> * </td> <td class="paramname"> <em>object</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Construct an auto-pointer referencing an existing object. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>object</em> </td><td>we point to. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a299d817bede8764904988e6f4bd8821f"></a><!-- doxytag: member="ucommon::auto_object::auto_object" ref="a299d817bede8764904988e6f4bd8821f" args="(const auto_object &pointer)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">ucommon::auto_object::auto_object </td> <td>(</td> <td class="paramtype">const <a class="el" href="a00021.html">auto_object</a> & </td> <td class="paramname"> <em>pointer</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Construct an auto-pointer as a copy of another pointer. </p> <p>The retention of the object being pointed to will be increased. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>pointer</em> </td><td>we are a copy of. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="aa73054012eefba083512da2e20e5ad21"></a><!-- doxytag: member="ucommon::auto_object::~auto_object" ref="aa73054012eefba083512da2e20e5ad21" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">ucommon::auto_object::~auto_object </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Delete auto pointer. </p> <p>When it falls out of scope, the retention of the object it references is reduced. If it falls to zero in a reference counted object, then the object is auto-deleted. </p> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a0f4bdc921fd0e6cc7062d940fb6ec568"></a><!-- doxytag: member="ucommon::auto_object::operator bool" ref="a0f4bdc921fd0e6cc7062d940fb6ec568" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">ucommon::auto_object::operator bool </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Test if the pointer is referencing an object. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>true if the pointer is currently referencing an object. </dd></dl> </div> </div> <a class="anchor" id="a420f2bc3e0361aceb6b999b835cfcc23"></a><!-- doxytag: member="ucommon::auto_object::operator!" ref="a420f2bc3e0361aceb6b999b835cfcc23" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool ucommon::auto_object::operator! </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Test if the pointer is not set. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>true if the pointer is not referencing anything. </dd></dl> </div> </div> <a class="anchor" id="a74c06dc2b5ed4c9bbaf1575d95d7f8df"></a><!-- doxytag: member="ucommon::auto_object::operator!=" ref="a74c06dc2b5ed4c9bbaf1575d95d7f8df" args="(ObjectProtocol *object) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool ucommon::auto_object::operator!= </td> <td>(</td> <td class="paramtype"><a class="el" href="a00095.html">ObjectProtocol</a> * </td> <td class="paramname"> <em>object</em></td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>test if the object being referenced is not the same as the object we specify. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>object</em> </td><td>we compare to. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>true if this is not the object our pointer references. </dd></dl> </div> </div> <a class="anchor" id="aae31f92bc054d6ea65149c015fe4561f"></a><!-- doxytag: member="ucommon::auto_object::operator=" ref="aae31f92bc054d6ea65149c015fe4561f" args="(ObjectProtocol *object)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ucommon::auto_object::operator= </td> <td>(</td> <td class="paramtype"><a class="el" href="a00095.html">ObjectProtocol</a> * </td> <td class="paramname"> <em>object</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Set our pointer to a specific object. </p> <p>If the pointer currently references another object, that object is released. The pointer references our new object and that new object is retained. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>object</em> </td><td>to assign to. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a69db0091d2d958d5e65881d4bb7778e8"></a><!-- doxytag: member="ucommon::auto_object::operator==" ref="a69db0091d2d958d5e65881d4bb7778e8" args="(ObjectProtocol *object) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool ucommon::auto_object::operator== </td> <td>(</td> <td class="paramtype"><a class="el" href="a00095.html">ObjectProtocol</a> * </td> <td class="paramname"> <em>object</em></td> <td> ) </td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>test if the object being referenced is the same as the object we specify. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>object</em> </td><td>we compare to. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>true if this is the object our pointer references. </dd></dl> </div> </div> <a class="anchor" id="ad8d94e748d3d9924e326157d7cdc58f3"></a><!-- doxytag: member="ucommon::auto_object::release" ref="ad8d94e748d3d9924e326157d7cdc58f3" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ucommon::auto_object::release </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Manually release the pointer. </p> <p>This reduces the retention level of the object and resets the pointer to point to nobody. </p> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li>ucommon/<a class="el" href="a00192_source.html">object.h</a></li> </ul> </div> <hr class="footer"/><address style="text-align: right;"><small>Generated on Thu Jul 14 16:39:28 2011 for ucommon by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.3 </small></address> </body> </html>