<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>vrq: CObstack Class Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> <table border="0" cellspacing="0" cellpadding="0" width="100%"> <tr> <td width="180"><a href="index.html"><img src="vrq.png" width="150" height="100" border="0" alt="vrq"></a></td> <td background="top_bg.png" align="right" width="100%"> <img src="glyth.png" width="500" height="100" border="0" alt=""> </td> </tr> <tr> <td background="#FFFFFF" align="right" width="50" height="4"></td> </tr> </table> </head><body> <!-- Generated by Doxygen 1.7.1 --> <div class="navigation" id="top"> <div class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> </ul> </div> <div class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#nested-classes">Classes</a> | <a href="#pub-methods">Public Member Functions</a> | <a href="#pub-static-methods">Static Public Member Functions</a> </div> <div class="headertitle"> <h1>CObstack Class Reference</h1> </div> </div> <div class="contents"> <!-- doxytag: class="CObstack" --> <p>Bulk object allocation object. <a href="#_details">More...</a></p> <p><code>#include <<a class="el" href="cobstack_8h_source.html">cobstack.h</a>></code></p> <p><a href="classCObstack-members.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="nested-classes"></a> Classes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">struct </td><td class="memItemRight" valign="bottom"><b>obstackChunk_tag</b></td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">obstack chunk definition <br/></td></tr> <tr><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classCObstack.html#a26cb0626f867c18a9c2fa561b8d40c99">CObstack</a> (const char *name, int chunkSize=OBSTACK_DEFAULT_BLOCK_SIZE)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create object stack with given chunk size. <a href="#a26cb0626f867c18a9c2fa561b8d40c99"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classCObstack.html#acd532e9dad49a7f0fb9078662776a798">~CObstack</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy and free object stack storage. <a href="#acd532e9dad49a7f0fb9078662776a798"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="classCObstack.html#a5a34d5a2800a901ed15366c11bf269ef">Alloc</a> (<a class="el" href="glue_8h.html#a0cb58e7e6f0bad369840a52e54a56ae0">INT32</a> size)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Allocate block of storage with given size. <a href="#a5a34d5a2800a901ed15366c11bf269ef"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classCObstack.html#a7763a15e24a5bd82bc0fd382a1addb06">Free</a> (void *object)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Free all storage including and after object. <a href="#a7763a15e24a5bd82bc0fd382a1addb06"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="classCObstack.html#aa6d480d625bc9e614d9db94feff56148">GetBase</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get base of current object. <a href="#aa6d480d625bc9e614d9db94feff56148"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="classCObstack.html#a1fadce1a7dfba37fb5a11e3c5fd2b5a9">NextFree</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get next free byte of current object. <a href="#a1fadce1a7dfba37fb5a11e3c5fd2b5a9"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="classCObstack.html#ad216d2d013e463d652a79c5e2a709fe9">Finish</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Finialized the object. <a href="#ad216d2d013e463d652a79c5e2a709fe9"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="classCObstack.html#a5eda9721eff6e83fc70b1eecc12037be">Copy</a> (const void *ptr, <a class="el" href="glue_8h.html#a0cb58e7e6f0bad369840a52e54a56ae0">INT32</a> size)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Allocate storage and copy block of memory to heap. <a href="#a5eda9721eff6e83fc70b1eecc12037be"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="classCObstack.html#a8853005f4398d98c243c203a8bd20a07">Copy0</a> (const void *ptr, <a class="el" href="glue_8h.html#a0cb58e7e6f0bad369840a52e54a56ae0">INT32</a> size)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Allocate storage and copy block of memory with a byte of 0 to heap. <a href="#a8853005f4398d98c243c203a8bd20a07"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="glue_8h.html#a0cb58e7e6f0bad369840a52e54a56ae0">INT32</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classCObstack.html#ad782078a85dc95960411e09afd268ca2">GetObjectSize</a> (void)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Get size of current open object. <a href="#ad782078a85dc95960411e09afd268ca2"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classCObstack.html#af27ba7b48343fbcd84f5420801738f63">Grow</a> (const void *ptr, <a class="el" href="glue_8h.html#a0cb58e7e6f0bad369840a52e54a56ae0">INT32</a> size)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Grow current object and copy block of data to heap. <a href="#af27ba7b48343fbcd84f5420801738f63"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classCObstack.html#a77717b4a4719f584a299e4a6f25cdc0e">Grow</a> (<a class="el" href="glue_8h.html#a0cb58e7e6f0bad369840a52e54a56ae0">INT32</a> size)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Grow current object Object stays open and can be grown further. <a href="#a77717b4a4719f584a299e4a6f25cdc0e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classCObstack.html#a170649ea35a6b88632d4441323641860">PtrGrow</a> (void *ptr)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Grow current object and copy pointer to heap. <a href="#a170649ea35a6b88632d4441323641860"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classCObstack.html#a9a1007c7a26a765ed8e007a677f93485">IsOwner</a> (void *ptr)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Determine if pointer was allocated from this obstack. <a href="#a9a1007c7a26a765ed8e007a677f93485"></a><br/></td></tr> <tr><td colspan="2"><h2><a name="pub-static-methods"></a> Static Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classCObstack.html#acaa39ce07caa1c6c972586ced60a39f2">OnExitDumpStats</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">OnExitDumpStats Dump memory allocation stats for each obstack at exit. <a href="#acaa39ce07caa1c6c972586ced60a39f2"></a><br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>Bulk object allocation object. </p> <p>Objects are allocated one at a time, but freed all at once. This is very efficient for both persistant and temporary storage. </p> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="a26cb0626f867c18a9c2fa561b8d40c99"></a><!-- doxytag: member="CObstack::CObstack" ref="a26cb0626f867c18a9c2fa561b8d40c99" args="(const char *name, int chunkSize=OBSTACK_DEFAULT_BLOCK_SIZE)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">CObstack::CObstack </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"> <em>name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>chunkSize</em> = <code>OBSTACK_DEFAULT_BLOCK_SIZE</code></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Create object stack with given chunk size. </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>name of obstack (used for printing stats) </td></tr> <tr><td valign="top"></td><td valign="top"><em>chunkSize</em> </td><td>allocation block size. Optional parameter defaults to OBSTACK_DEFAULT_BLOCK_SIZE </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="acd532e9dad49a7f0fb9078662776a798"></a><!-- doxytag: member="CObstack::~CObstack" ref="acd532e9dad49a7f0fb9078662776a798" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">CObstack::~CObstack </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Destroy and free object stack storage. </p> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a5a34d5a2800a901ed15366c11bf269ef"></a><!-- doxytag: member="CObstack::Alloc" ref="a5a34d5a2800a901ed15366c11bf269ef" args="(INT32 size)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* CObstack::Alloc </td> <td>(</td> <td class="paramtype"><a class="el" href="glue_8h.html#a0cb58e7e6f0bad369840a52e54a56ae0">INT32</a> </td> <td class="paramname"> <em>size</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Allocate block of storage with given size. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>number of bytes to allocate. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>pointer to storage. </dd></dl> </div> </div> <a class="anchor" id="a5eda9721eff6e83fc70b1eecc12037be"></a><!-- doxytag: member="CObstack::Copy" ref="a5eda9721eff6e83fc70b1eecc12037be" args="(const void *ptr, INT32 size)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* CObstack::Copy </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"> <em>ptr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="glue_8h.html#a0cb58e7e6f0bad369840a52e54a56ae0">INT32</a> </td> <td class="paramname"> <em>size</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Allocate storage and copy block of memory to heap. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>ptr</em> </td><td>pointer to block to copy. </td></tr> <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>size in bytes of block to copy. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>finalized pointer to block on heap. </dd></dl> </div> </div> <a class="anchor" id="a8853005f4398d98c243c203a8bd20a07"></a><!-- doxytag: member="CObstack::Copy0" ref="a8853005f4398d98c243c203a8bd20a07" args="(const void *ptr, INT32 size)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* CObstack::Copy0 </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"> <em>ptr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="glue_8h.html#a0cb58e7e6f0bad369840a52e54a56ae0">INT32</a> </td> <td class="paramname"> <em>size</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Allocate storage and copy block of memory with a byte of 0 to heap. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>ptr</em> </td><td>pointer to block to copy. </td></tr> <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>size in bytes of block to copy. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>finalized pointer to block on heap. </dd></dl> </div> </div> <a class="anchor" id="ad216d2d013e463d652a79c5e2a709fe9"></a><!-- doxytag: member="CObstack::Finish" ref="ad216d2d013e463d652a79c5e2a709fe9" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* CObstack::Finish </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Finialized the object. </p> <p>After this call the object cannot be grown. The pointer returned will not be relocated after this point. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>pointer to base of object. </dd></dl> </div> </div> <a class="anchor" id="a7763a15e24a5bd82bc0fd382a1addb06"></a><!-- doxytag: member="CObstack::Free" ref="a7763a15e24a5bd82bc0fd382a1addb06" args="(void *object)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CObstack::Free </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"> <em>object</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Free all storage including and after 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>if object is NULL, free all objects on heap. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="aa6d480d625bc9e614d9db94feff56148"></a><!-- doxytag: member="CObstack::GetBase" ref="aa6d480d625bc9e614d9db94feff56148" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* CObstack::GetBase </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Get base of current object. </p> <p>Object has not been finalized so pointer may change as more space is allocated. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>pointer to base. </dd></dl> </div> </div> <a class="anchor" id="ad782078a85dc95960411e09afd268ca2"></a><!-- doxytag: member="CObstack::GetObjectSize" ref="ad782078a85dc95960411e09afd268ca2" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="glue_8h.html#a0cb58e7e6f0bad369840a52e54a56ae0">INT32</a> CObstack::GetObjectSize </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Get size of current open object. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>size in bytes of current object. </dd></dl> </div> </div> <a class="anchor" id="af27ba7b48343fbcd84f5420801738f63"></a><!-- doxytag: member="CObstack::Grow" ref="af27ba7b48343fbcd84f5420801738f63" args="(const void *ptr, INT32 size)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CObstack::Grow </td> <td>(</td> <td class="paramtype">const void * </td> <td class="paramname"> <em>ptr</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="glue_8h.html#a0cb58e7e6f0bad369840a52e54a56ae0">INT32</a> </td> <td class="paramname"> <em>size</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Grow current object and copy block of data to heap. </p> <p>Object stays open and can be grown further. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>ptr</em> </td><td>pointer to block to copy. </td></tr> <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>size in bytes of block to copy. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a77717b4a4719f584a299e4a6f25cdc0e"></a><!-- doxytag: member="CObstack::Grow" ref="a77717b4a4719f584a299e4a6f25cdc0e" args="(INT32 size)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CObstack::Grow </td> <td>(</td> <td class="paramtype"><a class="el" href="glue_8h.html#a0cb58e7e6f0bad369840a52e54a56ae0">INT32</a> </td> <td class="paramname"> <em>size</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Grow current object Object stays open and can be grown further. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>number of bytes to grow object . </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="a9a1007c7a26a765ed8e007a677f93485"></a><!-- doxytag: member="CObstack::IsOwner" ref="a9a1007c7a26a765ed8e007a677f93485" args="(void *ptr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">int CObstack::IsOwner </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"> <em>ptr</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Determine if pointer was allocated from this obstack. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>ptr</em> </td><td>pointer to block. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>non-zero if block was allocated from this obstack. </dd></dl> </div> </div> <a class="anchor" id="a1fadce1a7dfba37fb5a11e3c5fd2b5a9"></a><!-- doxytag: member="CObstack::NextFree" ref="a1fadce1a7dfba37fb5a11e3c5fd2b5a9" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void* CObstack::NextFree </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Get next free byte of current object. </p> <p>Object has not been finalized so pointer may change as more space is allocated. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>pointer to base. </dd></dl> </div> </div> <a class="anchor" id="acaa39ce07caa1c6c972586ced60a39f2"></a><!-- doxytag: member="CObstack::OnExitDumpStats" ref="acaa39ce07caa1c6c972586ced60a39f2" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">static void CObstack::OnExitDumpStats </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td><code> [static]</code></td> </tr> </table> </div> <div class="memdoc"> <p>OnExitDumpStats Dump memory allocation stats for each obstack at exit. </p> </div> </div> <a class="anchor" id="a170649ea35a6b88632d4441323641860"></a><!-- doxytag: member="CObstack::PtrGrow" ref="a170649ea35a6b88632d4441323641860" args="(void *ptr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void CObstack::PtrGrow </td> <td>(</td> <td class="paramtype">void * </td> <td class="paramname"> <em>ptr</em></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Grow current object and copy pointer to heap. </p> <p>Object stays open and can be grown further. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>ptr</em> </td><td>pointer to copy. </td></tr> </table> </dd> </dl> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li>/net/fileserver/nas/home/mdh/vrq/src/<a class="el" href="cobstack_8h_source.html">cobstack.h</a></li> </ul> </div> <hr class="footer"/><address class="footer"><small>Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> </body> </html>