<!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"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.5"/> <title>libglom-1.22: Glom::sharedptr< T_obj > Class Template Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">libglom-1.22  <span id="projectnumber">1.22.5</span> </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.5 --> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.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>Classes</span></a></li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div id="nav-path" class="navpath"> <ul> <li class="navelem"><a class="el" href="namespaceGlom.html">Glom</a></li><li class="navelem"><a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a></li> </ul> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#pub-types">Public Types</a> | <a href="#pub-methods">Public Member Functions</a> | <a href="#pub-static-methods">Static Public Member Functions</a> | <a href="classGlom_1_1sharedptr-members.html">List of all members</a> </div> <div class="headertitle"> <div class="title">Glom::sharedptr< T_obj > Class Template Reference</div> </div> </div><!--header--> <div class="contents"> <p>A ref-counting smart-pointer for the underlying C++ object. <a href="classGlom_1_1sharedptr.html#details">More...</a></p> <div class="dynheader"> Inheritance diagram for Glom::sharedptr< T_obj >:</div> <div class="dyncontent"> <div class="center"><img src="classGlom_1_1sharedptr__inherit__graph.png" border="0" usemap="#Glom_1_1sharedptr_3_01T__obj_01_4_inherit__map" alt="Inheritance graph"/></div> <map name="Glom_1_1sharedptr_3_01T__obj_01_4_inherit__map" id="Glom_1_1sharedptr_3_01T__obj_01_4_inherit__map"> <area shape="rect" id="node2" href="classGlom_1_1sharedptr.html" title="Glom::sharedptr\< Glom\l::UsesRelationship \>" alt="" coords="352,9,507,50"/><area shape="rect" id="node3" href="classGlom_1_1sharedptr.html" title="Glom::sharedptr\< Glom\l::CustomTitle \>" alt="" coords="352,74,507,115"/><area shape="rect" id="node4" href="classGlom_1_1sharedptr.html" title="Glom::sharedptr\< const\l T_ElementField \>" alt="" coords="352,139,507,181"/><area shape="rect" id="node5" href="classGlom_1_1sharedptr.html" title="Glom::sharedptr\< Glom\l::TableInfo \>" alt="" coords="352,205,507,246"/><area shape="rect" id="node6" href="classGlom_1_1sharedptr.html" title="Glom::sharedptr\< Glom\l::TranslatableItem \>" alt="" coords="352,270,507,311"/><area shape="rect" id="node7" href="classGlom_1_1sharedptr.html" title="Glom::sharedptr\< Glom\l::DatabaseTitle \>" alt="" coords="352,335,507,377"/><area shape="rect" id="node8" href="classGlom_1_1sharedptr.html" title="Glom::sharedptr\< Glom\l::Relationship \>" alt="" coords="352,401,507,442"/><area shape="rect" id="node9" href="classGlom_1_1sharedptr.html" title="Glom::sharedptr\< Glom\l::LayoutGroup \>" alt="" coords="352,466,507,507"/><area shape="rect" id="node10" href="classGlom_1_1sharedptr.html" title="Glom::sharedptr\< const\l Glom::Relationship \>" alt="" coords="352,531,507,573"/><area shape="rect" id="node11" href="classGlom_1_1sharedptr.html" title="Glom::sharedptr\< Glom\l::LayoutItem_Field \>" alt="" coords="352,597,507,638"/><area shape="rect" id="node12" href="classGlom_1_1sharedptr.html" title="Glom::sharedptr\< const\l Glom::Field \>" alt="" coords="352,662,507,703"/><area shape="rect" id="node13" href="classGlom_1_1sharedptr.html" title="Glom::sharedptr\< Glom\l::Field \>" alt="" coords="352,727,507,769"/></map> <center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a> Public Types</h2></td></tr> <tr class="memitem:a136c71f35df111e6f6bfa9e03e9917a0"><td class="memItemLeft" align="right" valign="top">typedef <a class="elRef" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00301.html#ad477e282dc33a113ed64628b9b32e3dd">size_t</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#a136c71f35df111e6f6bfa9e03e9917a0">size_type</a></td></tr> <tr class="separator:a136c71f35df111e6f6bfa9e03e9917a0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:acb058473e72cf4f006a7a23ffbbdaf35"><td class="memItemLeft" align="right" valign="top">typedef T_obj </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#acb058473e72cf4f006a7a23ffbbdaf35">object_type</a></td></tr> <tr class="separator:acb058473e72cf4f006a7a23ffbbdaf35"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr class="memitem:a7749eb805a1a96911d3244bae89611a4"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#a7749eb805a1a96911d3244bae89611a4">sharedptr</a> ()</td></tr> <tr class="separator:a7749eb805a1a96911d3244bae89611a4"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a915c7a122a951ec527f04ae985112ef1"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#a915c7a122a951ec527f04ae985112ef1">sharedptr</a> (T_obj* pobj)</td></tr> <tr class="memdesc:a915c7a122a951ec527f04ae985112ef1"><td class="mdescLeft"> </td><td class="mdescRight">Take ownership. <a href="#a915c7a122a951ec527f04ae985112ef1">More...</a><br/></td></tr> <tr class="separator:a915c7a122a951ec527f04ae985112ef1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7e090a36f58b2811717c25cab64cae14"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#a7e090a36f58b2811717c25cab64cae14">sharedptr</a> (T_obj* pobj, <a class="el" href="classGlom_1_1sharedptr.html#a136c71f35df111e6f6bfa9e03e9917a0">size_type</a>* refcount)</td></tr> <tr class="memdesc:a7e090a36f58b2811717c25cab64cae14"><td class="mdescLeft"> </td><td class="mdescRight">Take ownership. <a href="#a7e090a36f58b2811717c25cab64cae14">More...</a><br/></td></tr> <tr class="separator:a7e090a36f58b2811717c25cab64cae14"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6102dbc1119f259160e667856633042b"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#a6102dbc1119f259160e667856633042b">sharedptr</a> (const <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>& src)</td></tr> <tr class="memdesc:a6102dbc1119f259160e667856633042b"><td class="mdescLeft"> </td><td class="mdescRight">Share ownership. <a href="#a6102dbc1119f259160e667856633042b">More...</a><br/></td></tr> <tr class="separator:a6102dbc1119f259160e667856633042b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a04d5ed27e0cb5ef44d49fadcfeafa928"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#a04d5ed27e0cb5ef44d49fadcfeafa928">swap</a> (<a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_obj >& other)</td></tr> <tr class="memdesc:a04d5ed27e0cb5ef44d49fadcfeafa928"><td class="mdescLeft"> </td><td class="mdescRight">Swap the contents of two sharedptr<>. <a href="#a04d5ed27e0cb5ef44d49fadcfeafa928">More...</a><br/></td></tr> <tr class="separator:a04d5ed27e0cb5ef44d49fadcfeafa928"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a512b65f7a40867492db88c6a89930a51"><td class="memTemplParams" colspan="2">template<class T_CastFrom > </td></tr> <tr class="memitem:a512b65f7a40867492db88c6a89930a51"><td class="memTemplItemLeft" align="right" valign="top"> </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#a512b65f7a40867492db88c6a89930a51">sharedptr</a> (const <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_CastFrom >& src)</td></tr> <tr class="memdesc:a512b65f7a40867492db88c6a89930a51"><td class="mdescLeft"> </td><td class="mdescRight">Copy constructor (from different, but castable type). <a href="#a512b65f7a40867492db88c6a89930a51">More...</a><br/></td></tr> <tr class="separator:a512b65f7a40867492db88c6a89930a51"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a1cdd392b3e161e02a16ca205ea54311a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>& </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#a1cdd392b3e161e02a16ca205ea54311a">operator=</a> (const <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>& src)</td></tr> <tr class="memdesc:a1cdd392b3e161e02a16ca205ea54311a"><td class="mdescLeft"> </td><td class="mdescRight">Share ownership. <a href="#a1cdd392b3e161e02a16ca205ea54311a">More...</a><br/></td></tr> <tr class="separator:a1cdd392b3e161e02a16ca205ea54311a"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9a3c4a52a541002ce237c05970b9f9ca"><td class="memTemplParams" colspan="2">template<class T_CastFrom > </td></tr> <tr class="memitem:a9a3c4a52a541002ce237c05970b9f9ca"><td class="memTemplItemLeft" align="right" valign="top"><a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_obj >& </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#a9a3c4a52a541002ce237c05970b9f9ca">operator=</a> (const <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_CastFrom >& src)</td></tr> <tr class="memdesc:a9a3c4a52a541002ce237c05970b9f9ca"><td class="mdescLeft"> </td><td class="mdescRight">Copy from different, but castable type). <a href="#a9a3c4a52a541002ce237c05970b9f9ca">More...</a><br/></td></tr> <tr class="separator:a9a3c4a52a541002ce237c05970b9f9ca"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab4de9a1efd217faa77e39a1813c4bd0b"><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#ab4de9a1efd217faa77e39a1813c4bd0b">~sharedptr</a> ()</td></tr> <tr class="separator:ab4de9a1efd217faa77e39a1813c4bd0b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af93fe9dabf864468837057cb430d6817"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#af93fe9dabf864468837057cb430d6817">operator==</a> (const <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_obj >& src) const </td></tr> <tr class="separator:af93fe9dabf864468837057cb430d6817"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a107f3107052d1d026b54a7dde628cc13"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#a107f3107052d1d026b54a7dde628cc13">operator!=</a> (const <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_obj >& src) const </td></tr> <tr class="separator:a107f3107052d1d026b54a7dde628cc13"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4d421575966613b3eb0862e1d0776419"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#a4d421575966613b3eb0862e1d0776419">clear</a> ()</td></tr> <tr class="memdesc:a4d421575966613b3eb0862e1d0776419"><td class="mdescLeft"> </td><td class="mdescRight">Forget the instance. <a href="#a4d421575966613b3eb0862e1d0776419">More...</a><br/></td></tr> <tr class="separator:a4d421575966613b3eb0862e1d0776419"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ace647214b829e740d49a7a760341ee09"><td class="memItemLeft" align="right" valign="top">T_obj& </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#ace647214b829e740d49a7a760341ee09">operator*</a> ()</td></tr> <tr class="memdesc:ace647214b829e740d49a7a760341ee09"><td class="mdescLeft"> </td><td class="mdescRight">Dereferencing. <a href="#ace647214b829e740d49a7a760341ee09">More...</a><br/></td></tr> <tr class="separator:ace647214b829e740d49a7a760341ee09"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a249c5d4eef8f2c27c72c4b5c9807cc52"><td class="memItemLeft" align="right" valign="top">const T_obj& </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#a249c5d4eef8f2c27c72c4b5c9807cc52">operator*</a> () const </td></tr> <tr class="memdesc:a249c5d4eef8f2c27c72c4b5c9807cc52"><td class="mdescLeft"> </td><td class="mdescRight">Dereferencing. <a href="#a249c5d4eef8f2c27c72c4b5c9807cc52">More...</a><br/></td></tr> <tr class="separator:a249c5d4eef8f2c27c72c4b5c9807cc52"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3f3e93d6c6f2f2858f54abcaf3aecdcf"><td class="memItemLeft" align="right" valign="top">T_obj* </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#a3f3e93d6c6f2f2858f54abcaf3aecdcf">operator-></a> () const </td></tr> <tr class="memdesc:a3f3e93d6c6f2f2858f54abcaf3aecdcf"><td class="mdescLeft"> </td><td class="mdescRight">Dereferencing. <a href="#a3f3e93d6c6f2f2858f54abcaf3aecdcf">More...</a><br/></td></tr> <tr class="separator:a3f3e93d6c6f2f2858f54abcaf3aecdcf"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a2a9e0c086b97df95d465d39d29e5467b"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#a2a9e0c086b97df95d465d39d29e5467b">operator bool</a> () const </td></tr> <tr class="memdesc:a2a9e0c086b97df95d465d39d29e5467b"><td class="mdescLeft"> </td><td class="mdescRight">Test whether the sharedptr<> points to any underlying instance. <a href="#a2a9e0c086b97df95d465d39d29e5467b">More...</a><br/></td></tr> <tr class="separator:a2a9e0c086b97df95d465d39d29e5467b"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ad854eea3ed6f8bff576b1323d0f458f7"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#ad854eea3ed6f8bff576b1323d0f458f7">operator!</a> () const </td></tr> <tr class="memdesc:ad854eea3ed6f8bff576b1323d0f458f7"><td class="mdescLeft"> </td><td class="mdescRight">Test whether the sharedptr<> points to any underlying instance. <a href="#ad854eea3ed6f8bff576b1323d0f458f7">More...</a><br/></td></tr> <tr class="separator:ad854eea3ed6f8bff576b1323d0f458f7"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4b254013a623c15f9040b4e26772d399"><td class="memItemLeft" align="right" valign="top">T_obj* </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#a4b254013a623c15f9040b4e26772d399">obj</a> ()</td></tr> <tr class="memdesc:a4b254013a623c15f9040b4e26772d399"><td class="mdescLeft"> </td><td class="mdescRight">Get the underlying instance: <a href="#a4b254013a623c15f9040b4e26772d399">More...</a><br/></td></tr> <tr class="separator:a4b254013a623c15f9040b4e26772d399"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a14b85493ef0d6ea82e6305050259ca84"><td class="memItemLeft" align="right" valign="top">const T_obj* </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#a14b85493ef0d6ea82e6305050259ca84">obj</a> () const </td></tr> <tr class="memdesc:a14b85493ef0d6ea82e6305050259ca84"><td class="mdescLeft"> </td><td class="mdescRight">Get the underlying instance: <a href="#a14b85493ef0d6ea82e6305050259ca84">More...</a><br/></td></tr> <tr class="separator:a14b85493ef0d6ea82e6305050259ca84"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a> Static Public Member Functions</h2></td></tr> <tr class="memitem:ac9cf06571175f4a4d8f3d2190bc37543"><td class="memTemplParams" colspan="2">template<class T_CastFrom > </td></tr> <tr class="memitem:ac9cf06571175f4a4d8f3d2190bc37543"><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_obj > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#ac9cf06571175f4a4d8f3d2190bc37543">cast_dynamic</a> (const <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_CastFrom >& src)</td></tr> <tr class="memdesc:ac9cf06571175f4a4d8f3d2190bc37543"><td class="mdescLeft"> </td><td class="mdescRight">Dynamic cast to derived class. <a href="#ac9cf06571175f4a4d8f3d2190bc37543">More...</a><br/></td></tr> <tr class="separator:ac9cf06571175f4a4d8f3d2190bc37543"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ace0fe6fbe81840a22e99791ba35c8877"><td class="memTemplParams" colspan="2">template<class T_CastFrom > </td></tr> <tr class="memitem:ace0fe6fbe81840a22e99791ba35c8877"><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_obj > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#ace0fe6fbe81840a22e99791ba35c8877">cast_static</a> (const <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_CastFrom >& src)</td></tr> <tr class="memdesc:ace0fe6fbe81840a22e99791ba35c8877"><td class="mdescLeft"> </td><td class="mdescRight">Static cast to derived class. <a href="#ace0fe6fbe81840a22e99791ba35c8877">More...</a><br/></td></tr> <tr class="separator:ace0fe6fbe81840a22e99791ba35c8877"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af72e59391dfafb761e6fd7efab1548d6"><td class="memTemplParams" colspan="2">template<class T_CastFrom > </td></tr> <tr class="memitem:af72e59391dfafb761e6fd7efab1548d6"><td class="memTemplItemLeft" align="right" valign="top">static <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_obj > </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#af72e59391dfafb761e6fd7efab1548d6">cast_const</a> (const <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_CastFrom >& src)</td></tr> <tr class="memdesc:af72e59391dfafb761e6fd7efab1548d6"><td class="mdescLeft"> </td><td class="mdescRight">Cast to non-const. <a href="#af72e59391dfafb761e6fd7efab1548d6">More...</a><br/></td></tr> <tr class="separator:af72e59391dfafb761e6fd7efab1548d6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aeb06d0326d1404fe72a9eb9eeb8dd981"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_obj > </td><td class="memItemRight" valign="bottom"><a class="el" href="classGlom_1_1sharedptr.html#aeb06d0326d1404fe72a9eb9eeb8dd981">create</a> ()</td></tr> <tr class="separator:aeb06d0326d1404fe72a9eb9eeb8dd981"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><h3>template<typename T_obj><br/> class Glom::sharedptr< T_obj ></h3> <p>A ref-counting smart-pointer for the underlying C++ object. </p> <p>You can copy these smarpointers-of-C++-resources, and therefore the C++ classes can have simple copy constructors which just share the underlying resources. </p> </div><h2 class="groupheader">Member Typedef Documentation</h2> <a class="anchor" id="acb058473e72cf4f006a7a23ffbbdaf35"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <typename T_obj> </div> <table class="memname"> <tr> <td class="memname">typedef T_obj <a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::<a class="el" href="classGlom_1_1sharedptr.html#acb058473e72cf4f006a7a23ffbbdaf35">object_type</a></td> </tr> </table> </div><div class="memdoc"> </div> </div> <a class="anchor" id="a136c71f35df111e6f6bfa9e03e9917a0"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <typename T_obj> </div> <table class="memname"> <tr> <td class="memname">typedef <a class="elRef" href="http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/a00301.html#ad477e282dc33a113ed64628b9b32e3dd">size_t</a> <a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::<a class="el" href="classGlom_1_1sharedptr.html#a136c71f35df111e6f6bfa9e03e9917a0">size_type</a></td> </tr> </table> </div><div class="memdoc"> </div> </div> <h2 class="groupheader">Constructor & Destructor Documentation</h2> <a class="anchor" id="a7749eb805a1a96911d3244bae89611a4"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <typename T_obj > </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::<a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a> </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> </div> </div> <a class="anchor" id="a915c7a122a951ec527f04ae985112ef1"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <typename T_obj> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::<a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a> </td> <td>(</td> <td class="paramtype">T_obj * </td> <td class="paramname"><em>pobj</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">explicit</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Take ownership. </p> </div> </div> <a class="anchor" id="a7e090a36f58b2811717c25cab64cae14"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <typename T_obj> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::<a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a> </td> <td>(</td> <td class="paramtype">T_obj * </td> <td class="paramname"><em>pobj</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classGlom_1_1sharedptr.html#a136c71f35df111e6f6bfa9e03e9917a0">size_type</a>* </td> <td class="paramname"><em>refcount</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">explicit</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Take ownership. </p> <p>This is only for internal use. </p> </div> </div> <a class="anchor" id="a6102dbc1119f259160e667856633042b"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <typename T_obj> </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::<a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a> </td> <td>(</td> <td class="paramtype">const <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_obj >& </td> <td class="paramname"><em>src</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Share ownership. </p> </div> </div> <a class="anchor" id="a512b65f7a40867492db88c6a89930a51"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <class T_obj > </div> <div class="memtemplate"> template <class T_CastFrom > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::<a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a> </td> <td>(</td> <td class="paramtype">const <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_CastFrom >& </td> <td class="paramname"><em>src</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Copy constructor (from different, but castable type). </p> <p>Increments the reference count. </p> </div> </div> <a class="anchor" id="ab4de9a1efd217faa77e39a1813c4bd0b"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <typename T_obj > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::~<a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a> </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">virtual</span></span> </td> </tr> </table> </div><div class="memdoc"> </div> </div> <h2 class="groupheader">Member Function Documentation</h2> <a class="anchor" id="af72e59391dfafb761e6fd7efab1548d6"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <class T_obj > </div> <div class="memtemplate"> template <class T_CastFrom > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_obj > <a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::cast_const </td> <td>(</td> <td class="paramtype">const <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_CastFrom >& </td> <td class="paramname"><em>src</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Cast to non-const. </p> <p>The sharedptr can't be cast with the usual notation so instead you can use </p> <div class="fragment"><div class="line">* ptr_unconst = <a class="code" href="classGlom_1_1sharedptr.html#af72e59391dfafb761e6fd7efab1548d6">sharedptr<UnConstType>::cast_const</a>(ptr_const);</div> <div class="line">* </div> </div><!-- fragment --> </div> </div> <a class="anchor" id="ac9cf06571175f4a4d8f3d2190bc37543"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <class T_obj > </div> <div class="memtemplate"> template <class T_CastFrom > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_obj > <a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::cast_dynamic </td> <td>(</td> <td class="paramtype">const <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_CastFrom >& </td> <td class="paramname"><em>src</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Dynamic cast to derived class. </p> <p>The sharedptr can't be cast with the usual notation so instead you can use </p> <div class="fragment"><div class="line">* ptr_derived = <a class="code" href="classGlom_1_1sharedptr.html#ac9cf06571175f4a4d8f3d2190bc37543">sharedptr<Derived>::cast_dynamic</a>(ptr_base);</div> <div class="line">* </div> </div><!-- fragment --> </div> </div> <a class="anchor" id="ace0fe6fbe81840a22e99791ba35c8877"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <class T_obj > </div> <div class="memtemplate"> template <class T_CastFrom > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_obj > <a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::cast_static </td> <td>(</td> <td class="paramtype">const <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_CastFrom >& </td> <td class="paramname"><em>src</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Static cast to derived class. </p> <p>Like the dynamic cast; the notation is </p> <div class="fragment"><div class="line">* ptr_derived = <a class="code" href="classGlom_1_1sharedptr.html#ace0fe6fbe81840a22e99791ba35c8877">sharedptr<Derived>::cast_static</a>(ptr_base);</div> <div class="line">* </div> </div><!-- fragment --> </div> </div> <a class="anchor" id="a4d421575966613b3eb0862e1d0776419"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <typename T_obj > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::clear </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">virtual</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Forget the instance. </p> </div> </div> <a class="anchor" id="aeb06d0326d1404fe72a9eb9eeb8dd981"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <typename T_obj> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">static <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a><T_obj> <a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::create </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td> </tr> </table> </div><div class="memdoc"> </div> </div> <a class="anchor" id="a4b254013a623c15f9040b4e26772d399"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <typename T_obj > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">T_obj* <a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::obj </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Get the underlying instance: </p> </div> </div> <a class="anchor" id="a14b85493ef0d6ea82e6305050259ca84"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <typename T_obj > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">const T_obj* <a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::obj </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Get the underlying instance: </p> </div> </div> <a class="anchor" id="a2a9e0c086b97df95d465d39d29e5467b"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <class T_obj > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::operator bool </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Test whether the sharedptr<> points to any underlying instance. </p> <p>Mimics usage of ordinary pointers: </p> <div class="fragment"><div class="line">* <span class="keywordflow">if</span>(ptr)</div> <div class="line">* do_something();</div> <div class="line">* </div> </div><!-- fragment --> </div> </div> <a class="anchor" id="ad854eea3ed6f8bff576b1323d0f458f7"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <class T_obj > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">bool <a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::operator! </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Test whether the sharedptr<> points to any underlying instance. </p> <p>Mimics usage of ordinary pointers: </p> <div class="fragment"><div class="line">* <span class="keywordflow">if</span>(!ptr)</div> <div class="line">* do_something();</div> <div class="line">* </div> </div><!-- fragment --> </div> </div> <a class="anchor" id="a107f3107052d1d026b54a7dde628cc13"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <class T_obj> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">bool <a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::<a class="el" href="classGlom_1_1sharedptr.html#ad854eea3ed6f8bff576b1323d0f458f7">operator!</a>= </td> <td>(</td> <td class="paramtype">const <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_obj >& </td> <td class="paramname"><em>src</em></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> </div> </div> <a class="anchor" id="ace647214b829e740d49a7a760341ee09"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <typename T_obj > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">T_obj& <a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::operator* </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Dereferencing. </p> </div> </div> <a class="anchor" id="a249c5d4eef8f2c27c72c4b5c9807cc52"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <typename T_obj > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">const T_obj& <a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::operator* </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Dereferencing. </p> </div> </div> <a class="anchor" id="a3f3e93d6c6f2f2858f54abcaf3aecdcf"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <typename T_obj > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">T_obj* <a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::operator-> </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Dereferencing. </p> <p>Use the methods of the underlying instance like so: <code>sharedptr->memberfun()</code>. </p> </div> </div> <a class="anchor" id="a1cdd392b3e161e02a16ca205ea54311a"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <typename T_obj > </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_obj >& <a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::operator= </td> <td>(</td> <td class="paramtype">const <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_obj >& </td> <td class="paramname"><em>src</em></td><td>)</td> <td></td> </tr> </table> </div><div class="memdoc"> <p>Share ownership. </p> </div> </div> <a class="anchor" id="a9a3c4a52a541002ce237c05970b9f9ca"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <class T_obj > </div> <div class="memtemplate"> template <class T_CastFrom > </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_obj >& <a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::operator= </td> <td>(</td> <td class="paramtype">const <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_CastFrom >& </td> <td class="paramname"><em>src</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Copy from different, but castable type). </p> <p>Increments the reference count. </p> </div> </div> <a class="anchor" id="af93fe9dabf864468837057cb430d6817"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <class T_obj> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">bool <a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::operator== </td> <td>(</td> <td class="paramtype">const <a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_obj >& </td> <td class="paramname"><em>src</em></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> </div> </div> <a class="anchor" id="a04d5ed27e0cb5ef44d49fadcfeafa928"></a> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template <class T_obj> </div> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classGlom_1_1sharedptr.html">Glom::sharedptr</a>< T_obj >::swap </td> <td>(</td> <td class="paramtype"><a class="el" href="classGlom_1_1sharedptr.html">sharedptr</a>< T_obj >& </td> <td class="paramname"><em>other</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Swap the contents of two sharedptr<>. </p> <p>This method swaps the internal pointers. This can be done safely without involving a reference/unreference cycle and is therefore highly efficient. </p> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li>libglom/sharedptr.h</li> </ul> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Sun Dec 15 2013 12:25:07 for libglom-1.22 by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.5 </small></address> </body> </html>