<!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: CSymtab< T1 > Class Template 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="#pub-methods">Public Member Functions</a> </div> <div class="headertitle"> <h1>CSymtab< T1 > Class Template Reference</h1> </div> </div> <div class="contents"> <!-- doxytag: class="CSymtab" --> <p>Aux class used to create symbol table scoping. <a href="#_details">More...</a></p> <p><code>#include <<a class="el" href="csymtab_8h_source.html">csymtab.h</a>></code></p> <p><a href="classCSymtab-members.html">List of all members.</a></p> <table class="memberdecls"> <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="classCSymtab.html#afdb92980563b3571f3497cc0f9d97f40">CSymtab</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create a symbol table. <a href="#afdb92980563b3571f3497cc0f9d97f40"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classCSymtab.html#a356d0c0f64fc4fa474728edee01afb48">PopScope</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Jump back to parent scope. <a href="#a356d0c0f64fc4fa474728edee01afb48"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classCSymtab.html#a11270ecff582507a26ddde378bf63de4">PushScope</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create a new scope for table. <a href="#a11270ecff582507a26ddde378bf63de4"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classCSymtab.html#adc05d90930af6c7576fc00193a90a313">Add</a> (<a class="el" href="classCSymbol.html">CSymbol</a> *sym, T1 *obj)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Add a symbol and it's assocated object at the current level. <a href="#adc05d90930af6c7576fc00193a90a313"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">T1 * </td><td class="memItemRight" valign="bottom"><a class="el" href="classCSymtab.html#aa01df1c918f304f970ea4f79415d072a">LookupTop</a> (<a class="el" href="classCSymbol.html">CSymbol</a> *sym)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Lookup symbol only in current scope. <a href="#aa01df1c918f304f970ea4f79415d072a"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">T1 * </td><td class="memItemRight" valign="bottom"><a class="el" href="classCSymtab.html#abd368272c0a967bde6840a8c1fe693cf">Lookup</a> (<a class="el" href="classCSymbol.html">CSymbol</a> *sym)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Lookup symbol in all scopes starting at the current scope. <a href="#abd368272c0a967bde6840a8c1fe693cf"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classCSymtab.html#ac3db6c89c96d9e5e9dec4200fa942892">Dump</a> (FILE *f, int recurse)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Dump all symbols in table to file descriptor. <a href="#ac3db6c89c96d9e5e9dec4200fa942892"></a><br/></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <h3>template<class T1><br/> class CSymtab< T1 ></h3> <p>Aux class used to create symbol table scoping. </p> <p>Class for a type safe hierarchical symbol table. Each level of the table represents a different nested scope. Searches a the leaves of the table seach upward to the table root if needed. </p> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="afdb92980563b3571f3497cc0f9d97f40"></a><!-- doxytag: member="CSymtab::CSymtab" ref="afdb92980563b3571f3497cc0f9d97f40" args="()" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T1> </div> <table class="memname"> <tr> <td class="memname"><a class="el" href="classCSymtab.html">CSymtab</a>< T1 >::<a class="el" href="classCSymtab.html">CSymtab</a> </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Create a symbol table. </p> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="adc05d90930af6c7576fc00193a90a313"></a><!-- doxytag: member="CSymtab::Add" ref="adc05d90930af6c7576fc00193a90a313" args="(CSymbol *sym, T1 *obj)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T1> </div> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classCSymtab.html">CSymtab</a>< T1 >::Add </td> <td>(</td> <td class="paramtype"><a class="el" href="classCSymbol.html">CSymbol</a> * </td> <td class="paramname"> <em>sym</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">T1 * </td> <td class="paramname"> <em>obj</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>Add a symbol and it's assocated object at the current level. </p> <p>Create a new level if needed. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sym</em> </td><td>symbol to add to table. </td></tr> <tr><td valign="top"></td><td valign="top"><em>obj</em> </td><td>object to associated with symbol. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="ac3db6c89c96d9e5e9dec4200fa942892"></a><!-- doxytag: member="CSymtab::Dump" ref="ac3db6c89c96d9e5e9dec4200fa942892" args="(FILE *f, int recurse)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T1> </div> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classCSymtab.html">CSymtab</a>< T1 >::Dump </td> <td>(</td> <td class="paramtype">FILE * </td> <td class="paramname"> <em>f</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>recurse</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>Dump all symbols in table to file descriptor. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>f</em> </td><td>file descriptor. </td></tr> <tr><td valign="top"></td><td valign="top"><em>recurse</em> </td><td>zero if only current depth should be dumped. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="abd368272c0a967bde6840a8c1fe693cf"></a><!-- doxytag: member="CSymtab::Lookup" ref="abd368272c0a967bde6840a8c1fe693cf" args="(CSymbol *sym)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T1> </div> <table class="memname"> <tr> <td class="memname">T1* <a class="el" href="classCSymtab.html">CSymtab</a>< T1 >::Lookup </td> <td>(</td> <td class="paramtype"><a class="el" href="classCSymbol.html">CSymbol</a> * </td> <td class="paramname"> <em>sym</em></td> <td> ) </td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Lookup symbol in all scopes starting at the current scope. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sym</em> </td><td>symbol to search for. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>object associated with symbol. NULL if symbol is not found. </dd></dl> </div> </div> <a class="anchor" id="aa01df1c918f304f970ea4f79415d072a"></a><!-- doxytag: member="CSymtab::LookupTop" ref="aa01df1c918f304f970ea4f79415d072a" args="(CSymbol *sym)" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T1> </div> <table class="memname"> <tr> <td class="memname">T1* <a class="el" href="classCSymtab.html">CSymtab</a>< T1 >::LookupTop </td> <td>(</td> <td class="paramtype"><a class="el" href="classCSymbol.html">CSymbol</a> * </td> <td class="paramname"> <em>sym</em></td> <td> ) </td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Lookup symbol only in current scope. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>sym</em> </td><td>symbol to search for. </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>object associated with symbol. NULL if symbol is not found. </dd></dl> </div> </div> <a class="anchor" id="a356d0c0f64fc4fa474728edee01afb48"></a><!-- doxytag: member="CSymtab::PopScope" ref="a356d0c0f64fc4fa474728edee01afb48" args="()" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T1> </div> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classCSymtab.html">CSymtab</a>< T1 >::PopScope </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Jump back to parent scope. </p> </div> </div> <a class="anchor" id="a11270ecff582507a26ddde378bf63de4"></a><!-- doxytag: member="CSymtab::PushScope" ref="a11270ecff582507a26ddde378bf63de4" args="()" --> <div class="memitem"> <div class="memproto"> <div class="memtemplate"> template<class T1> </div> <table class="memname"> <tr> <td class="memname">void <a class="el" href="classCSymtab.html">CSymtab</a>< T1 >::PushScope </td> <td>(</td> <td class="paramname"></td> <td> ) </td> <td><code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Create a new scope for table. </p> </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="csymtab_8h_source.html">csymtab.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>