<!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>ANTLR Support Libraries 2.7.1+: ASTFactory Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body onload='searchBox.OnSelectItem(0);'> <!-- Generated by Doxygen 1.7.3 --> <script type="text/javascript"><!-- var searchBox = new SearchBox("searchBox", "search",false,'Search'); --></script> <div id="top"> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">ANTLR Support Libraries 2.7.1+</div> </td> </tr> </tbody> </table> </div> <div id="navrow1" 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="namespaces.html"><span>Namespaces</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> <li id="searchli"> <div id="MSearchBox" class="MSearchBoxInactive"> <span class="left"> <img id="MSearchSelect" src="search/mag_sel.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/> <input type="text" id="MSearchField" value="Search" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/> </span><span class="right"> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> </span> </div> </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> <div class="header"> <div class="summary"> <a href="#pub-types">Public Types</a> | <a href="#pub-methods">Public Member Functions</a> | <a href="#pro-methods">Protected Member Functions</a> | <a href="#pro-attribs">Protected Attributes</a> | <a href="#pri-methods">Private Member Functions</a> </div> <div class="headertitle"> <h1>ASTFactory Class Reference</h1> </div> </div> <div class="contents"> <!-- doxytag: class="ASTFactory" --> <p><code>#include <<a class="el" href="ASTFactory_8hpp_source.html">ASTFactory.hpp</a>></code></p> <p><a href="classASTFactory-members.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="pub-types"></a> Public Types</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="ASTFactory_8hpp.html#a2d75f858411b36f90810c514e027d898">factory_type_</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#ab1f4d9a4164b3fdbc108cd80c4a90c91">factory_type</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="ASTFactory_8hpp.html#a3b00832dfc56df44016c8e4a2fa859d9">factory_descriptor_</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a9c97858a3e774830ff79786df5e7eeb8">factory_descriptor</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef <a class="el" href="ASTFactory_8hpp.html#ad238d646f2cb061795ebb1781b5bd0b1">factory_descriptor_list_</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a5dd9db29bc09513ee1b8d669cd47177d">factory_descriptor_list</a></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="classASTFactory.html#afd7f65cf43db744f2d702c6e7f6f2442">ASTFactory</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Make new factory. Per default (Ref)<a class="el" href="classCommonAST.html">CommonAST</a> instances are generated. <a href="#afd7f65cf43db744f2d702c6e7f6f2442"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a00f1b0f6666c42d4524458d26898b4ed">ASTFactory</a> (const char *factory_node_name, <a class="el" href="classASTFactory.html#ab1f4d9a4164b3fdbc108cd80c4a90c91">factory_type</a> factory)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#acdf5532a1a16457623335fffcd8ff96e">~ASTFactory</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Destroy factory. <a href="#acdf5532a1a16457623335fffcd8ff96e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a0e7fb1eefd7138f4766f7bd73683acef">registerFactory</a> (int type, const char *ast_name, <a class="el" href="classASTFactory.html#ab1f4d9a4164b3fdbc108cd80c4a90c91">factory_type</a> factory)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Register a node factory for the node type type with name ast_name. <a href="#a0e7fb1eefd7138f4766f7bd73683acef"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#add369568ba81b66258154baf6a5997f3">setMaxNodeType</a> (int type)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Set the maximum node (<a class="el" href="classAST.html">AST</a>) type this factory may encounter. <a href="#add369568ba81b66258154baf6a5997f3"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#abb0d6c6064f96da88e4d757dfb8ad2d9">addASTChild</a> (<a class="el" href="classASTPair.html">ASTPair</a> &currentAST, <a class="el" href="classASTRefCount.html">RefAST</a> child)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Add a child to the current <a class="el" href="classAST.html">AST</a>. <a href="#abb0d6c6064f96da88e4d757dfb8ad2d9"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="classASTRefCount.html">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#acd0c8fa258d0419b230c7b146d8abb67">create</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create new empty <a class="el" href="classAST.html">AST</a> node. The right default type shou. <a href="#acd0c8fa258d0419b230c7b146d8abb67"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classASTRefCount.html">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a8298a8ad3504ef55fb0fd49d9156b02f">create</a> (int type)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create <a class="el" href="classAST.html">AST</a> node of the right type for 'type'. <a href="#a8298a8ad3504ef55fb0fd49d9156b02f"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classASTRefCount.html">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#af8137fdbc161e655889cb7a4daec63bf">create</a> (int type, const std::string &txt)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create <a class="el" href="classAST.html">AST</a> node of the right type for 'type' and initialize with txt. <a href="#af8137fdbc161e655889cb7a4daec63bf"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classASTRefCount.html">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a8b1a67e507c5d7ee83414ab03b854346">create</a> (<a class="el" href="classASTRefCount.html">RefAST</a> tr)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create duplicate of tr. <a href="#a8b1a67e507c5d7ee83414ab03b854346"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classASTRefCount.html">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#ac12973204add38802871896f0e0a60c7">create</a> (<a class="el" href="classTokenRefCount.html">RefToken</a> tok)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create new <a class="el" href="classAST.html">AST</a> node and initialize contents from a token. <a href="#ac12973204add38802871896f0e0a60c7"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classASTRefCount.html">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#af46a17f9a780a448ec9ab520d3119db0">create</a> (const std::string &txt, std::istream &infile)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Create new <a class="el" href="classAST.html">AST</a> node and initialize contents from a stream. <a href="#af46a17f9a780a448ec9ab520d3119db0"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classASTRefCount.html">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#af81063ee8ba6928502bc726f09d3049f">dup</a> (<a class="el" href="classASTRefCount.html">RefAST</a> t)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classASTRefCount.html">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a78a74353746ce9196baf5bfab7a21c71">dupList</a> (<a class="el" href="classASTRefCount.html">RefAST</a> t)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Duplicate tree including siblings of root. <a href="#a78a74353746ce9196baf5bfab7a21c71"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classASTRefCount.html">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#afb94f89c2233918b2f8db2e89740b5c0">dupTree</a> (<a class="el" href="classASTRefCount.html">RefAST</a> t)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classASTRefCount.html">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#ae0402b48fd8792961bc4ba1992e3805f">make</a> (std::vector< <a class="el" href="classASTRefCount.html">RefAST</a> > &nodes)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classASTRefCount.html">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a186ad4df82551cde470a4fca863d5f9e">make</a> (<a class="el" href="classASTArray.html">ASTArray</a> *nodes)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#ac9634c6fbd0a07454214fc68ec1a1973">makeASTRoot</a> (<a class="el" href="classASTPair.html">ASTPair</a> &currentAST, <a class="el" href="classASTRefCount.html">RefAST</a> root)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Make an <a class="el" href="classAST.html">AST</a> the root of current <a class="el" href="classAST.html">AST</a>. <a href="#ac9634c6fbd0a07454214fc68ec1a1973"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#ab8f467998ab767e0aee88a3b736b0fa7">setASTNodeFactory</a> (const char *factory_node_name, <a class="el" href="classASTFactory.html#ab1f4d9a4164b3fdbc108cd80c4a90c91">factory_type</a> factory)</td></tr> <tr><td colspan="2"><h2><a name="pro-methods"></a> Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a76aa8e4af4eb68d40ba28d4f7d6c469e">loadChildren</a> (std::istream &infile, <a class="el" href="classASTRefCount.html">RefAST</a> current)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a12e54c6d06779246aa2823cfd25a31fb">loadSiblings</a> (std::istream &infile, <a class="el" href="classASTRefCount.html">RefAST</a> current)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a4ae66873b11caacc90f48cc5ca967152">checkCloseTag</a> (std::istream &infile)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classASTRefCount.html">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#ab52e3f4268d49df3bb1b00a913abbca6">getNodeOfType</a> (unsigned int type)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a636d3e54488e7308577da8efd8c36214">getASTNodeType</a> (unsigned int type)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">get the name of the node 'type' <a href="#a636d3e54488e7308577da8efd8c36214"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classASTFactory.html#ab1f4d9a4164b3fdbc108cd80c4a90c91">factory_type</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a6f9a2eb1a3c134a9ad2f28c12e91a676">getASTNodeFactory</a> (unsigned int type)</td></tr> <tr><td colspan="2"><h2><a name="pro-attribs"></a> Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classASTFactory.html#a9c97858a3e774830ff79786df5e7eeb8">factory_descriptor</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a803fa045e14e331920a509f5a8dc84f1">default_factory_descriptor</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classASTFactory.html#a5dd9db29bc09513ee1b8d669cd47177d">factory_descriptor_list</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a853cf94e2d67392314cbba6d1118b22c">nodeFactories</a></td></tr> <tr><td colspan="2"><h2><a name="pri-methods"></a> Private Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#ad7faba28b1da373a3270aabb3d2c3d36">ASTFactory</a> (const <a class="el" href="classASTFactory.html">ASTFactory</a> &)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classASTFactory.html">ASTFactory</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a5607adf1c02048930cb94cb6265bde13">operator=</a> (const <a class="el" href="classASTFactory.html">ASTFactory</a> &)</td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <div class="textblock"><p><a class="el" href="classAST.html">AST</a> Super Factory shared by <a class="el" href="classTreeParser.html">TreeParser</a> and <a class="el" href="classParser.html">Parser</a>. This super factory maintains a map of all <a class="el" href="classAST.html">AST</a> node types to their respective <a class="el" href="classAST.html">AST</a> factories. One instance should be shared among a parser/treeparser chain.</p> <dl class="todo"><dt><b><a class="el" href="todo.html#_todo000001">Todo:</a></b></dt><dd>check all this code for possible use of references in stead of RefAST's. </dd></dl> </div><hr/><h2>Member Typedef Documentation</h2> <a class="anchor" id="a9c97858a3e774830ff79786df5e7eeb8"></a><!-- doxytag: member="ASTFactory::factory_descriptor" ref="a9c97858a3e774830ff79786df5e7eeb8" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef <a class="el" href="ASTFactory_8hpp.html#a3b00832dfc56df44016c8e4a2fa859d9">factory_descriptor_</a> <a class="el" href="classASTFactory.html#a9c97858a3e774830ff79786df5e7eeb8">ASTFactory::factory_descriptor</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a5dd9db29bc09513ee1b8d669cd47177d"></a><!-- doxytag: member="ASTFactory::factory_descriptor_list" ref="a5dd9db29bc09513ee1b8d669cd47177d" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef <a class="el" href="ASTFactory_8hpp.html#ad238d646f2cb061795ebb1781b5bd0b1">factory_descriptor_list_</a> <a class="el" href="classASTFactory.html#a5dd9db29bc09513ee1b8d669cd47177d">ASTFactory::factory_descriptor_list</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="ab1f4d9a4164b3fdbc108cd80c4a90c91"></a><!-- doxytag: member="ASTFactory::factory_type" ref="ab1f4d9a4164b3fdbc108cd80c4a90c91" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef <a class="el" href="ASTFactory_8hpp.html#a2d75f858411b36f90810c514e027d898">factory_type_</a> <a class="el" href="classASTFactory.html#ab1f4d9a4164b3fdbc108cd80c4a90c91">ASTFactory::factory_type</a></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="afd7f65cf43db744f2d702c6e7f6f2442"></a><!-- doxytag: member="ASTFactory::ASTFactory" ref="afd7f65cf43db744f2d702c6e7f6f2442" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">ASTFactory::ASTFactory </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Make new factory. Per default (Ref)<a class="el" href="classCommonAST.html">CommonAST</a> instances are generated. </p> <p>Initialize factory.</p> <p><a class="el" href="classAST.html">AST</a> Support code shared by <a class="el" href="classTreeParser.html">TreeParser</a> and <a class="el" href="classParser.html">Parser</a>. We use delegation to share code (and have only one bit of code to maintain) rather than subclassing or superclassing (forces <a class="el" href="classAST.html">AST</a> support code to be loaded even when you don't want to do <a class="el" href="classAST.html">AST</a> stuff).</p> <p>This class collects all factories of <a class="el" href="classAST.html">AST</a> types used inside the code. New <a class="el" href="classAST.html">AST</a> node types are registered with the registerFactory method. On creation of an <a class="el" href="classASTFactory.html">ASTFactory</a> object a default <a class="el" href="classAST.html">AST</a> node factory may be specified.</p> <p>When registering types gaps between different types are filled with entries for the default factory. </p> </div> </div> <a class="anchor" id="a00f1b0f6666c42d4524458d26898b4ed"></a><!-- doxytag: member="ASTFactory::ASTFactory" ref="a00f1b0f6666c42d4524458d26898b4ed" args="(const char *factory_node_name, factory_type factory)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">ASTFactory::ASTFactory </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>factory_node_name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classASTFactory.html#ab1f4d9a4164b3fdbc108cd80c4a90c91">factory_type</a> </td> <td class="paramname"><em>fact</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Initialize factory with a non default node type. factory_node_name should be the name of the <a class="el" href="classAST.html">AST</a> node type the factory generates. (should exist during the existance of this <a class="el" href="classASTFactory.html">ASTFactory</a> instance) </p> </div> </div> <a class="anchor" id="acdf5532a1a16457623335fffcd8ff96e"></a><!-- doxytag: member="ASTFactory::~ASTFactory" ref="acdf5532a1a16457623335fffcd8ff96e" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">ASTFactory::~ASTFactory </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Destroy factory. </p> <p>Delete <a class="el" href="classASTFactory.html">ASTFactory</a>. </p> </div> </div> <a class="anchor" id="ad7faba28b1da373a3270aabb3d2c3d36"></a><!-- doxytag: member="ASTFactory::ASTFactory" ref="ad7faba28b1da373a3270aabb3d2c3d36" args="(const ASTFactory &)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">ASTFactory::ASTFactory </td> <td>(</td> <td class="paramtype">const <a class="el" href="classASTFactory.html">ASTFactory</a> & </td> <td class="paramname"></td><td>)</td> <td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="abb0d6c6064f96da88e4d757dfb8ad2d9"></a><!-- doxytag: member="ASTFactory::addASTChild" ref="abb0d6c6064f96da88e4d757dfb8ad2d9" args="(ASTPair &currentAST, RefAST child)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ASTFactory::addASTChild </td> <td>(</td> <td class="paramtype"><a class="el" href="classASTPair.html">ASTPair</a> & </td> <td class="paramname"><em>currentAST</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classASTRefCount.html">RefAST</a> </td> <td class="paramname"><em>child</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Add a child to the current <a class="el" href="classAST.html">AST</a>. </p> <p>Add a child to the current <a class="el" href="classAST.html">AST</a> </p> </div> </div> <a class="anchor" id="a4ae66873b11caacc90f48cc5ca967152"></a><!-- doxytag: member="ASTFactory::checkCloseTag" ref="a4ae66873b11caacc90f48cc5ca967152" args="(std::istream &infile)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool ASTFactory::checkCloseTag </td> <td>(</td> <td class="paramtype">std::istream & </td> <td class="paramname"><em>infile</em></td><td>)</td> <td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="acd0c8fa258d0419b230c7b146d8abb67"></a><!-- doxytag: member="ASTFactory::create" ref="acd0c8fa258d0419b230c7b146d8abb67" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classASTRefCount.html">RefAST</a> ASTFactory::create </td> <td>(</td> <td class="paramname"></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Create new empty <a class="el" href="classAST.html">AST</a> node. The right default type shou. </p> <p>Create a new empty <a class="el" href="classAST.html">AST</a> node; if the user did not specify an <a class="el" href="classAST.html">AST</a> node type, then create a default one: <a class="el" href="classCommonAST.html">CommonAST</a>. </p> </div> </div> <a class="anchor" id="ac12973204add38802871896f0e0a60c7"></a><!-- doxytag: member="ASTFactory::create" ref="ac12973204add38802871896f0e0a60c7" args="(RefToken tok)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classASTRefCount.html">RefAST</a> ASTFactory::create </td> <td>(</td> <td class="paramtype"><a class="el" href="classTokenRefCount.html">RefToken</a> </td> <td class="paramname"><em>tok</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Create new <a class="el" href="classAST.html">AST</a> node and initialize contents from a token. </p> </div> </div> <a class="anchor" id="af46a17f9a780a448ec9ab520d3119db0"></a><!-- doxytag: member="ASTFactory::create" ref="af46a17f9a780a448ec9ab520d3119db0" args="(const std::string &txt, std::istream &infile)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classASTRefCount.html">RefAST</a> ASTFactory::create </td> <td>(</td> <td class="paramtype">const std::string & </td> <td class="paramname"><em>txt</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">std::istream & </td> <td class="paramname"><em>infile</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Create new <a class="el" href="classAST.html">AST</a> node and initialize contents from a stream. </p> </div> </div> <a class="anchor" id="a8298a8ad3504ef55fb0fd49d9156b02f"></a><!-- doxytag: member="ASTFactory::create" ref="a8298a8ad3504ef55fb0fd49d9156b02f" args="(int type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classASTRefCount.html">RefAST</a> ASTFactory::create </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>type</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Create <a class="el" href="classAST.html">AST</a> node of the right type for 'type'. </p> </div> </div> <a class="anchor" id="af8137fdbc161e655889cb7a4daec63bf"></a><!-- doxytag: member="ASTFactory::create" ref="af8137fdbc161e655889cb7a4daec63bf" args="(int type, const std::string &txt)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classASTRefCount.html">RefAST</a> ASTFactory::create </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const std::string & </td> <td class="paramname"><em>txt</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Create <a class="el" href="classAST.html">AST</a> node of the right type for 'type' and initialize with txt. </p> </div> </div> <a class="anchor" id="a8b1a67e507c5d7ee83414ab03b854346"></a><!-- doxytag: member="ASTFactory::create" ref="a8b1a67e507c5d7ee83414ab03b854346" args="(RefAST tr)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classASTRefCount.html">RefAST</a> ASTFactory::create </td> <td>(</td> <td class="paramtype"><a class="el" href="classASTRefCount.html">RefAST</a> </td> <td class="paramname"><em>tr</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Create duplicate of tr. </p> <p>Create a new empty <a class="el" href="classAST.html">AST</a> node; if the user did not specify an <a class="el" href="classAST.html">AST</a> node type, then create a default one: <a class="el" href="classCommonAST.html">CommonAST</a>. </p> </div> </div> <a class="anchor" id="af81063ee8ba6928502bc726f09d3049f"></a><!-- doxytag: member="ASTFactory::dup" ref="af81063ee8ba6928502bc726f09d3049f" args="(RefAST t)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classASTRefCount.html">RefAST</a> ASTFactory::dup </td> <td>(</td> <td class="paramtype"><a class="el" href="classASTRefCount.html">RefAST</a> </td> <td class="paramname"><em>t</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Deep copy a single node. This function the new clone() methods in the <a class="el" href="classAST.html">AST</a> interface. Returns a new RefAST(nullASTptr) if t is null.</p> <p>Deep copy a single node. This function the new clone() methods in the <a class="el" href="classAST.html">AST</a> interface. Returns nullAST if t is null. </p> </div> </div> <a class="anchor" id="a78a74353746ce9196baf5bfab7a21c71"></a><!-- doxytag: member="ASTFactory::dupList" ref="a78a74353746ce9196baf5bfab7a21c71" args="(RefAST t)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classASTRefCount.html">RefAST</a> ASTFactory::dupList </td> <td>(</td> <td class="paramtype"><a class="el" href="classASTRefCount.html">RefAST</a> </td> <td class="paramname"><em>t</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Duplicate tree including siblings of root. </p> </div> </div> <a class="anchor" id="afb94f89c2233918b2f8db2e89740b5c0"></a><!-- doxytag: member="ASTFactory::dupTree" ref="afb94f89c2233918b2f8db2e89740b5c0" args="(RefAST t)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classASTRefCount.html">RefAST</a> ASTFactory::dupTree </td> <td>(</td> <td class="paramtype"><a class="el" href="classASTRefCount.html">RefAST</a> </td> <td class="paramname"><em>t</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Duplicate a tree, assuming this is a root node of a tree-- duplicate that node and what's below; ignore siblings of root node.</p> <p>Duplicate a tree, assuming this is a root node of a tree duplicate that node and what's below; ignore siblings of root node. </p> </div> </div> <a class="anchor" id="a6f9a2eb1a3c134a9ad2f28c12e91a676"></a><!-- doxytag: member="ASTFactory::getASTNodeFactory" ref="a6f9a2eb1a3c134a9ad2f28c12e91a676" args="(unsigned int type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classASTFactory.html#ab1f4d9a4164b3fdbc108cd80c4a90c91">factory_type</a> ASTFactory::getASTNodeFactory </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"><em>type</em></td><td>)</td> <td><code> [inline, protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a636d3e54488e7308577da8efd8c36214"></a><!-- doxytag: member="ASTFactory::getASTNodeType" ref="a636d3e54488e7308577da8efd8c36214" args="(unsigned int type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">const char* ASTFactory::getASTNodeType </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"><em>type</em></td><td>)</td> <td><code> [inline, protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p>get the name of the node 'type' </p> </div> </div> <a class="anchor" id="ab52e3f4268d49df3bb1b00a913abbca6"></a><!-- doxytag: member="ASTFactory::getNodeOfType" ref="ab52e3f4268d49df3bb1b00a913abbca6" args="(unsigned int type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classASTRefCount.html">RefAST</a> ASTFactory::getNodeOfType </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"><em>type</em></td><td>)</td> <td><code> [inline, protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a76aa8e4af4eb68d40ba28d4f7d6c469e"></a><!-- doxytag: member="ASTFactory::loadChildren" ref="a76aa8e4af4eb68d40ba28d4f7d6c469e" args="(std::istream &infile, RefAST current)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ASTFactory::loadChildren </td> <td>(</td> <td class="paramtype">std::istream & </td> <td class="paramname"><em>infile</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classASTRefCount.html">RefAST</a> </td> <td class="paramname"><em>current</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a12e54c6d06779246aa2823cfd25a31fb"></a><!-- doxytag: member="ASTFactory::loadSiblings" ref="a12e54c6d06779246aa2823cfd25a31fb" args="(std::istream &infile, RefAST current)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ASTFactory::loadSiblings </td> <td>(</td> <td class="paramtype">std::istream & </td> <td class="paramname"><em>infile</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classASTRefCount.html">RefAST</a> </td> <td class="paramname"><em>current</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="ae0402b48fd8792961bc4ba1992e3805f"></a><!-- doxytag: member="ASTFactory::make" ref="ae0402b48fd8792961bc4ba1992e3805f" args="(std::vector< RefAST > &nodes)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classASTRefCount.html">RefAST</a> ASTFactory::make </td> <td>(</td> <td class="paramtype">std::vector< <a class="el" href="classASTRefCount.html">RefAST</a> > & </td> <td class="paramname"><em>nodes</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Make a tree from a list of nodes. The first element in the array is the root. If the root is null, then the tree is a simple list not a tree. Handles null children nodes correctly. For example, make(a, b, null, c) yields tree (a b c). make(null,a,b) yields tree (nil a b). </p> </div> </div> <a class="anchor" id="a186ad4df82551cde470a4fca863d5f9e"></a><!-- doxytag: member="ASTFactory::make" ref="a186ad4df82551cde470a4fca863d5f9e" args="(ASTArray *nodes)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classASTRefCount.html">RefAST</a> ASTFactory::make </td> <td>(</td> <td class="paramtype"><a class="el" href="classASTArray.html">ASTArray</a> * </td> <td class="paramname"><em>nodes</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Make a tree from a list of nodes, where the nodes are contained in an <a class="el" href="classASTArray.html">ASTArray</a> object. The <a class="el" href="classASTArray.html">ASTArray</a> is deleted after use. </p> <dl class="todo"><dt><b><a class="el" href="todo.html#_todo000002">Todo:</a></b></dt><dd>FIXME! I have a feeling we can get rid of this ugly <a class="el" href="classASTArray.html">ASTArray</a> thing </dd></dl> <p>Make a tree from a list of nodes, where the nodes are contained in an <a class="el" href="classASTArray.html">ASTArray</a> object </p> </div> </div> <a class="anchor" id="ac9634c6fbd0a07454214fc68ec1a1973"></a><!-- doxytag: member="ASTFactory::makeASTRoot" ref="ac9634c6fbd0a07454214fc68ec1a1973" args="(ASTPair &currentAST, RefAST root)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ASTFactory::makeASTRoot </td> <td>(</td> <td class="paramtype"><a class="el" href="classASTPair.html">ASTPair</a> & </td> <td class="paramname"><em>currentAST</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classASTRefCount.html">RefAST</a> </td> <td class="paramname"><em>root</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Make an <a class="el" href="classAST.html">AST</a> the root of current <a class="el" href="classAST.html">AST</a>. </p> </div> </div> <a class="anchor" id="a5607adf1c02048930cb94cb6265bde13"></a><!-- doxytag: member="ASTFactory::operator=" ref="a5607adf1c02048930cb94cb6265bde13" args="(const ASTFactory &)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classASTFactory.html">ASTFactory</a>& ASTFactory::operator= </td> <td>(</td> <td class="paramtype">const <a class="el" href="classASTFactory.html">ASTFactory</a> & </td> <td class="paramname"></td><td>)</td> <td><code> [private]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a0e7fb1eefd7138f4766f7bd73683acef"></a><!-- doxytag: member="ASTFactory::registerFactory" ref="a0e7fb1eefd7138f4766f7bd73683acef" args="(int type, const char *ast_name, factory_type factory)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ASTFactory::registerFactory </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>type</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const char * </td> <td class="paramname"><em>ast_name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classASTFactory.html#ab1f4d9a4164b3fdbc108cd80c4a90c91">factory_type</a> </td> <td class="paramname"><em>factory</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Register a node factory for the node type type with name ast_name. </p> <p>Register a factory for a given <a class="el" href="classAST.html">AST</a> type. </p> </div> </div> <a class="anchor" id="ab8f467998ab767e0aee88a3b736b0fa7"></a><!-- doxytag: member="ASTFactory::setASTNodeFactory" ref="ab8f467998ab767e0aee88a3b736b0fa7" args="(const char *factory_node_name, factory_type factory)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ASTFactory::setASTNodeFactory </td> <td>(</td> <td class="paramtype">const char * </td> <td class="paramname"><em>factory_node_name</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype"><a class="el" href="classASTFactory.html#ab1f4d9a4164b3fdbc108cd80c4a90c91">factory_type</a> </td> <td class="paramname"><em>factory</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Set a new default <a class="el" href="classAST.html">AST</a> type. factory_node_name should be the name of the <a class="el" href="classAST.html">AST</a> node type the factory generates. (should exist during the existance of this <a class="el" href="classASTFactory.html">ASTFactory</a> instance). Only change factory between parser runs. You might get unexpected results otherwise. </p> </div> </div> <a class="anchor" id="add369568ba81b66258154baf6a5997f3"></a><!-- doxytag: member="ASTFactory::setMaxNodeType" ref="add369568ba81b66258154baf6a5997f3" args="(int type)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void ASTFactory::setMaxNodeType </td> <td>(</td> <td class="paramtype">int </td> <td class="paramname"><em>type</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Set the maximum node (<a class="el" href="classAST.html">AST</a>) type this factory may encounter. </p> </div> </div> <hr/><h2>Member Data Documentation</h2> <a class="anchor" id="a803fa045e14e331920a509f5a8dc84f1"></a><!-- doxytag: member="ASTFactory::default_factory_descriptor" ref="a803fa045e14e331920a509f5a8dc84f1" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classASTFactory.html#a9c97858a3e774830ff79786df5e7eeb8">factory_descriptor</a> <a class="el" href="classASTFactory.html#a803fa045e14e331920a509f5a8dc84f1">ASTFactory::default_factory_descriptor</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a853cf94e2d67392314cbba6d1118b22c"></a><!-- doxytag: member="ASTFactory::nodeFactories" ref="a853cf94e2d67392314cbba6d1118b22c" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classASTFactory.html#a5dd9db29bc09513ee1b8d669cd47177d">factory_descriptor_list</a> <a class="el" href="classASTFactory.html#a853cf94e2d67392314cbba6d1118b22c">ASTFactory::nodeFactories</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/>The documentation for this class was generated from the following files:<ul> <li>antlr/<a class="el" href="ASTFactory_8hpp_source.html">ASTFactory.hpp</a></li> <li>src/<a class="el" href="ASTFactory_8cpp.html">ASTFactory.cpp</a></li> </ul> </div> <!--- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <hr class="footer"/><address class="footer"><small>Generated on Fri Mar 25 2011 for ANTLR Support Libraries 2.7.1+ by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address> </body> </html>