<!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::assoc_pointer< T, I, M, P > Class Template 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="a00017.html">assoc_pointer</a> </div> </div> <div class="contents"> <h1>ucommon::assoc_pointer< T, I, M, P > Class Template Reference</h1><!-- doxytag: class="ucommon::assoc_pointer" --><!-- doxytag: inherits="ucommon::keyassoc" --> <p>A typed template for using a key association with typed objects. <a href="#_details">More...</a></p> <p><code>#include <<a class="el" href="a00190_source.html">memory.h</a>></code></p> <div class="dynheader"> Inheritance diagram for ucommon::assoc_pointer< T, I, M, P >:</div> <div class="dynsection"> <div class="center"><img src="a00337.png" border="0" usemap="#ucommon_1_1assoc__pointer_3_01_t_00_01_i_00_01_m_00_01_p_01_4_inherit__map" alt="Inheritance graph"/></div> <map name="ucommon_1_1assoc__pointer_3_01_t_00_01_i_00_01_m_00_01_p_01_4_inherit__map" id="ucommon_1_1assoc__pointer_3_01_t_00_01_i_00_01_m_00_01_p_01_4_inherit__map"> <area shape="rect" id="node2" href="a00054.html" title="A class to hold memory pointers referenced by string names." alt="" coords="100,229,292,256"/><area shape="rect" id="node4" href="a00081.html" title="A managed private heap for small allocations." alt="" coords="100,155,292,181"/><area shape="rect" id="node6" href="a00079.html" title="A memory protocol pager for private heap manager." alt="" coords="100,80,292,107"/><area shape="rect" id="node8" href="a00073.html" title="Common locking protocol." alt="" coords="65,5,327,32"/></map> <center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div> <div class="dynheader"> Collaboration diagram for ucommon::assoc_pointer< T, I, M, P >:</div> <div class="dynsection"> <div class="center"><img src="a00338.png" border="0" usemap="#ucommon_1_1assoc__pointer_3_01_t_00_01_i_00_01_m_00_01_p_01_4_coll__map" alt="Collaboration graph"/></div> <map name="ucommon_1_1assoc__pointer_3_01_t_00_01_i_00_01_m_00_01_p_01_4_coll__map" id="ucommon_1_1assoc__pointer_3_01_t_00_01_i_00_01_m_00_01_p_01_4_coll__map"> <area shape="rect" id="node2" href="a00054.html" title="A class to hold memory pointers referenced by string names." alt="" coords="173,357,365,384"/><area shape="rect" id="node4" href="a00081.html" title="A managed private heap for small allocations." alt="" coords="40,267,232,293"/><area shape="rect" id="node6" href="a00079.html" title="A memory protocol pager for private heap manager." alt="" coords="40,176,232,203"/><area shape="rect" id="node8" href="a00073.html" title="Common locking protocol." alt="" coords="5,91,267,117"/><area shape="rect" id="node10" href="a00090.html" title="A linked object base class with members found by name." alt="" coords="309,267,531,293"/><area shape="rect" id="node12" href="a00101.html" title="A linked object base class for ordered objects." alt="" coords="307,176,549,203"/><area shape="rect" id="node14" href="a00067.html" title="Common base class for all objects that can be formed into a linked list." alt="" coords="301,91,533,117"/><area shape="rect" id="node16" href="a00095.html" title="A common base class for all managed objects." alt="" coords="292,5,543,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">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a5b02d21159c55abb0c80739e67ed6d97">assign</a> (char *name, T *<a class="el" href="a00110.html">pointer</a>)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Assign a name for a pointer to a typed object. <a href="#a5b02d21159c55abb0c80739e67ed6d97"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acdbb3201846e7922452b6c401f6fa461"></a><!-- doxytag: member="ucommon::assoc_pointer::assoc_pointer" ref="acdbb3201846e7922452b6c401f6fa461" args="()" --> </td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#acdbb3201846e7922452b6c401f6fa461">assoc_pointer</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Construct an associated pointer hash map based on the class template. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#ac3bec8db4f5fc9607cfa4ce69db5ee42">create</a> (char *name, T *<a class="el" href="a00110.html">pointer</a>)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new name in the association table and assign typed object. <a href="#ac3bec8db4f5fc9607cfa4ce69db5ee42"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a874044a9b22a39502954dd97f4fb242c">getCount</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get the count of typed objects stored in our hash map. <a href="#a874044a9b22a39502954dd97f4fb242c"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a706f17536d7effc974ffbe27641b4024">getPages</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Access to number of pages allocated from heap for our associated index pointer. <a href="#a706f17536d7effc974ffbe27641b4024"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">T * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#af52f39b4a9aae6bd46f5282e05963fa1">locate</a> (const char *name)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Lookup a typed object by name. <a href="#af52f39b4a9aae6bd46f5282e05963fa1"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">T * </td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a2ac22536d14c7c2c7366b603549fa6b0">operator()</a> (const char *name)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Reference a typed object directly by name. <a href="#a2ac22536d14c7c2c7366b603549fa6b0"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf45dec159d8d71f87a0b0330c50699f"></a><!-- doxytag: member="ucommon::assoc_pointer::purge" ref="abf45dec159d8d71f87a0b0330c50699f" args="(void)" --> void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#abf45dec159d8d71f87a0b0330c50699f">purge</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Purge the hash map of typed objects. <br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a2670ce3db50719eca2df434a8ee5f9e3">remove</a> (char *name)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Remove a name and typed pointer association. <a href="#a2670ce3db50719eca2df434a8ee5f9e3"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">unsigned </td><td class="memItemRight" valign="bottom"><a class="el" href="a00017.html#a8417a60301a7edc65cea4a528959a77a">utilization</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Access to pager utilization stats. <a href="#a8417a60301a7edc65cea4a528959a77a"></a><br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <h3>template<class T, unsigned I = 177, size_t M = 0, size_t P = 0><br/> class ucommon::assoc_pointer< T, I, M, P ></h3> <p>A typed template for using a key association with typed objects. </p> <p>This essentially forms a form of "smart pointer" that is a reference to specific typed objects by symbolic name. This is commonly used as for associated indexing of typed objects. </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="a00190_source.html#l00529">529</a> of file <a class="el" href="a00190_source.html">memory.h</a>.</p> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a5b02d21159c55abb0c80739e67ed6d97"></a><!-- doxytag: member="ucommon::assoc_pointer::assign" ref="a5b02d21159c55abb0c80739e67ed6d97" args="(char *name, T *pointer)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T , unsigned I = 177, size_t M = 0, size_t P = 0> </div> <table class="memname"> <tr> <td class="memname">bool <a class="el" href="a00017.html">ucommon::assoc_pointer</a>< T, I, M, P >::assign </td> <td>(</td> <td class="paramtype">char * </td> <td class="paramname"> <em>name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">T * </td> <td class="paramname"> <em>pointer</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Assign a name for a pointer to a typed object. </p> <p>If the name exists, it is re-assigned with the new pointer value, otherwise it is created. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>to assign. </td></tr> <tr><td valign="top"></td><td valign="top"><em>pointer</em> </td><td>of typed object to assign with name. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>false if failed because name is too long for managed table. </dd></dl> <p>Definition at line <a class="el" href="a00190_source.html#l00573">573</a> of file <a class="el" href="a00190_source.html">memory.h</a>.</p> </div> </div> <a class="anchor" id="ac3bec8db4f5fc9607cfa4ce69db5ee42"></a><!-- doxytag: member="ucommon::assoc_pointer::create" ref="ac3bec8db4f5fc9607cfa4ce69db5ee42" args="(char *name, T *pointer)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T , unsigned I = 177, size_t M = 0, size_t P = 0> </div> <table class="memname"> <tr> <td class="memname">bool <a class="el" href="a00017.html">ucommon::assoc_pointer</a>< T, I, M, P >::create </td> <td>(</td> <td class="paramtype">char * </td> <td class="paramname"> <em>name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">T * </td> <td class="paramname"> <em>pointer</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Create a new name in the association table and assign typed 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>name</em> </td><td>to create. </td></tr> <tr><td valign="top"></td><td valign="top"><em>pointer</em> </td><td>of typed object to assign with name. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>false if already exists or name is too long for managed table. </dd></dl> <p>Definition at line <a class="el" href="a00190_source.html#l00582">582</a> of file <a class="el" href="a00190_source.html">memory.h</a>.</p> </div> </div> <a class="anchor" id="a874044a9b22a39502954dd97f4fb242c"></a><!-- doxytag: member="ucommon::assoc_pointer::getCount" ref="a874044a9b22a39502954dd97f4fb242c" args="(void)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T , unsigned I = 177, size_t M = 0, size_t P = 0> </div> <table class="memname"> <tr> <td class="memname">unsigned <a class="el" href="a00017.html">ucommon::assoc_pointer</a>< T, I, M, P >::getCount </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Get the count of typed objects stored in our hash map. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>typed objects in map. </dd></dl> <p>Reimplemented from <a class="el" href="a00054.html#ae8284cc0e94e03f5fd335effd49cb3e0">ucommon::keyassoc</a>.</p> <p>Definition at line <a class="el" href="a00190_source.html#l00541">541</a> of file <a class="el" href="a00190_source.html">memory.h</a>.</p> </div> </div> <a class="anchor" id="a706f17536d7effc974ffbe27641b4024"></a><!-- doxytag: member="ucommon::assoc_pointer::getPages" ref="a706f17536d7effc974ffbe27641b4024" args="(void)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T , unsigned I = 177, size_t M = 0, size_t P = 0> </div> <table class="memname"> <tr> <td class="memname">unsigned <a class="el" href="a00017.html">ucommon::assoc_pointer</a>< T, I, M, P >::getPages </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Access to number of pages allocated from heap for our associated index pointer. </p> <p>This is needed because we inherit keyassoc privately. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>count of heap pages used. </dd></dl> <p>Reimplemented from <a class="el" href="a00079.html#afc3defae0367c8c324a05f33cbfaad6d">ucommon::memalloc</a>.</p> <p>Definition at line <a class="el" href="a00190_source.html#l00607">607</a> of file <a class="el" href="a00190_source.html">memory.h</a>.</p> </div> </div> <a class="anchor" id="af52f39b4a9aae6bd46f5282e05963fa1"></a><!-- doxytag: member="ucommon::assoc_pointer::locate" ref="af52f39b4a9aae6bd46f5282e05963fa1" args="(const char *name)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T , unsigned I = 177, size_t M = 0, size_t P = 0> </div> <table class="memname"> <tr> <td class="memname">T* <a class="el" href="a00017.html">ucommon::assoc_pointer</a>< T, I, M, P >::locate </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>name</em></td> <td> ) </td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Lookup a typed object by name. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>of typed object to locate. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>typed object pointer or NULL if not found. </dd></dl> <p>Reimplemented from <a class="el" href="a00054.html#aea3a596142b2e9bf56a487d9b86a9c1c">ucommon::keyassoc</a>.</p> <p>Definition at line <a class="el" href="a00190_source.html#l00555">555</a> of file <a class="el" href="a00190_source.html">memory.h</a>.</p> </div> </div> <a class="anchor" id="a2ac22536d14c7c2c7366b603549fa6b0"></a><!-- doxytag: member="ucommon::assoc_pointer::operator()" ref="a2ac22536d14c7c2c7366b603549fa6b0" args="(const char *name)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T , unsigned I = 177, size_t M = 0, size_t P = 0> </div> <table class="memname"> <tr> <td class="memname">T* <a class="el" href="a00017.html">ucommon::assoc_pointer</a>< T, I, M, P >::operator() </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>name</em></td> <td> ) </td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Reference a typed object directly by name. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>of typed object to locate. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>typed object pointer or NULL if not found. </dd></dl> <p>Reimplemented from <a class="el" href="a00054.html#abf01feff7270f0e0c70341d53b1d47d2">ucommon::keyassoc</a>.</p> <p>Definition at line <a class="el" href="a00190_source.html#l00563">563</a> of file <a class="el" href="a00190_source.html">memory.h</a>.</p> </div> </div> <a class="anchor" id="a2670ce3db50719eca2df434a8ee5f9e3"></a><!-- doxytag: member="ucommon::assoc_pointer::remove" ref="a2670ce3db50719eca2df434a8ee5f9e3" args="(char *name)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T , unsigned I = 177, size_t M = 0, size_t P = 0> </div> <table class="memname"> <tr> <td class="memname">void <a class="el" href="a00017.html">ucommon::assoc_pointer</a>< T, I, M, P >::remove </td> <td>(</td> <td class="paramtype">char * </td> <td class="paramname"> <em>name</em></td> <td> ) </td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Remove a name and typed pointer association. </p> <p>If managed key names are used then the memory allocated for the name will be re-used. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>to remove. </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="a00190_source.html#l00590">590</a> of file <a class="el" href="a00190_source.html">memory.h</a>.</p> <p><div class="dynheader"> Here is the call graph for this function:</div> <div class="dynsection"> <div class="center"><img src="a00017_a2670ce3db50719eca2df434a8ee5f9e3_cgraph.png" border="0" usemap="#a00017_a2670ce3db50719eca2df434a8ee5f9e3_cgraph_map" alt=""></div> <map name="a00017_a2670ce3db50719eca2df434a8ee5f9e3_cgraph_map" id="a00017_a2670ce3db50719eca2df434a8ee5f9e3_cgraph"> <area shape="rect" id="node3" href="a00208.html#affa5eb1d4a61e90fb1fc3c3a65a6d849" title="Convenience function to remove an object from a stack." alt="" coords="377,5,548,32"/></map> </div> </p> </div> </div> <a class="anchor" id="a8417a60301a7edc65cea4a528959a77a"></a><!-- doxytag: member="ucommon::assoc_pointer::utilization" ref="a8417a60301a7edc65cea4a528959a77a" args="(void)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T , unsigned I = 177, size_t M = 0, size_t P = 0> </div> <table class="memname"> <tr> <td class="memname">unsigned <a class="el" href="a00017.html">ucommon::assoc_pointer</a>< T, I, M, P >::utilization </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Access to pager utilization stats. </p> <p>This is needed because we inherit keyassoc privately. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>pager utilization, 0-100. </dd></dl> <p>Reimplemented from <a class="el" href="a00081.html#a7cf6d9789486bd7147beb00ece4a4009">ucommon::mempager</a>.</p> <p>Definition at line <a class="el" href="a00190_source.html#l00598">598</a> of file <a class="el" href="a00190_source.html">memory.h</a>.</p> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li>ucommon/<a class="el" href="a00190_source.html">memory.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>