<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.5"/> <title>ANTLR Support Libraries 2.7.1+: ASTFactory Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/search.js"></script> <script type="text/javascript"> $(document).ready(function() { searchBox.OnSelectItem(0); }); </script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">ANTLR Support Libraries 2.7.1+ </div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.5 --> <script type="text/javascript"> var searchBox = new SearchBox("searchBox", "search",false,'Search'); </script> <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> <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> <!-- 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>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark"> </span>Pages</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="javascript:void(0)" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#pub-types">Public Types</a> | <a href="#pub-methods">Public Member Functions</a> | <a href="#pro-methods">Protected Member Functions</a> | <a href="#pro-attribs">Protected Attributes</a> | <a href="#pri-methods">Private Member Functions</a> | <a href="classASTFactory-members.html">List of all members</a> </div> <div class="headertitle"> <div class="title">ASTFactory Class Reference</div> </div> </div><!--header--> <div class="contents"> <p><code>#include <<a class="el" href="ASTFactory_8hpp_source.html">ASTFactory.hpp</a>></code></p> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a> Public Types</h2></td></tr> <tr class="memitem:ab1f4d9a4164b3fdbc108cd80c4a90c91"><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 class="separator:ab1f4d9a4164b3fdbc108cd80c4a90c91"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9c97858a3e774830ff79786df5e7eeb8"><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 class="separator:a9c97858a3e774830ff79786df5e7eeb8"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5dd9db29bc09513ee1b8d669cd47177d"><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 class="separator:a5dd9db29bc09513ee1b8d669cd47177d"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr class="memitem:afd7f65cf43db744f2d702c6e7f6f2442"><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 class="memdesc:afd7f65cf43db744f2d702c6e7f6f2442"><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">More...</a><br/></td></tr> <tr class="separator:afd7f65cf43db744f2d702c6e7f6f2442"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a00f1b0f6666c42d4524458d26898b4ed"><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 class="separator:a00f1b0f6666c42d4524458d26898b4ed"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:acdf5532a1a16457623335fffcd8ff96e"><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 class="memdesc:acdf5532a1a16457623335fffcd8ff96e"><td class="mdescLeft"> </td><td class="mdescRight">Destroy factory. <a href="#acdf5532a1a16457623335fffcd8ff96e">More...</a><br/></td></tr> <tr class="separator:acdf5532a1a16457623335fffcd8ff96e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0e7fb1eefd7138f4766f7bd73683acef"><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 class="memdesc:a0e7fb1eefd7138f4766f7bd73683acef"><td class="mdescLeft"> </td><td class="mdescRight">Register a node factory for the node type type with name ast_name. <a href="#a0e7fb1eefd7138f4766f7bd73683acef">More...</a><br/></td></tr> <tr class="separator:a0e7fb1eefd7138f4766f7bd73683acef"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:add369568ba81b66258154baf6a5997f3"><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 class="memdesc:add369568ba81b66258154baf6a5997f3"><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">More...</a><br/></td></tr> <tr class="separator:add369568ba81b66258154baf6a5997f3"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:abb0d6c6064f96da88e4d757dfb8ad2d9"><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="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> child)</td></tr> <tr class="memdesc:abb0d6c6064f96da88e4d757dfb8ad2d9"><td class="mdescLeft"> </td><td class="mdescRight">Add a child to the current <a class="el" href="classAST.html">AST</a>. <a href="#abb0d6c6064f96da88e4d757dfb8ad2d9">More...</a><br/></td></tr> <tr class="separator:abb0d6c6064f96da88e4d757dfb8ad2d9"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:acd0c8fa258d0419b230c7b146d8abb67"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#acd0c8fa258d0419b230c7b146d8abb67">create</a> ()</td></tr> <tr class="memdesc:acd0c8fa258d0419b230c7b146d8abb67"><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">More...</a><br/></td></tr> <tr class="separator:acd0c8fa258d0419b230c7b146d8abb67"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8298a8ad3504ef55fb0fd49d9156b02f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a8298a8ad3504ef55fb0fd49d9156b02f">create</a> (int type)</td></tr> <tr class="memdesc:a8298a8ad3504ef55fb0fd49d9156b02f"><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">More...</a><br/></td></tr> <tr class="separator:a8298a8ad3504ef55fb0fd49d9156b02f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af8137fdbc161e655889cb7a4daec63bf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">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 class="memdesc:af8137fdbc161e655889cb7a4daec63bf"><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">More...</a><br/></td></tr> <tr class="separator:af8137fdbc161e655889cb7a4daec63bf"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8b1a67e507c5d7ee83414ab03b854346"><td class="memItemLeft" align="right" valign="top"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a8b1a67e507c5d7ee83414ab03b854346">create</a> (<a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> tr)</td></tr> <tr class="memdesc:a8b1a67e507c5d7ee83414ab03b854346"><td class="mdescLeft"> </td><td class="mdescRight">Create duplicate of tr. <a href="#a8b1a67e507c5d7ee83414ab03b854346">More...</a><br/></td></tr> <tr class="separator:a8b1a67e507c5d7ee83414ab03b854346"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac12973204add38802871896f0e0a60c7"><td class="memItemLeft" align="right" valign="top"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#ac12973204add38802871896f0e0a60c7">create</a> (<a class="el" href="TokenRefCount_8hpp.html#a90bf433b9f39606e6bf39757f6910ac7">RefToken</a> tok)</td></tr> <tr class="memdesc:ac12973204add38802871896f0e0a60c7"><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">More...</a><br/></td></tr> <tr class="separator:ac12973204add38802871896f0e0a60c7"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af46a17f9a780a448ec9ab520d3119db0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">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 class="memdesc:af46a17f9a780a448ec9ab520d3119db0"><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">More...</a><br/></td></tr> <tr class="separator:af46a17f9a780a448ec9ab520d3119db0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af81063ee8ba6928502bc726f09d3049f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#af81063ee8ba6928502bc726f09d3049f">dup</a> (<a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> t)</td></tr> <tr class="separator:af81063ee8ba6928502bc726f09d3049f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a78a74353746ce9196baf5bfab7a21c71"><td class="memItemLeft" align="right" valign="top"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a78a74353746ce9196baf5bfab7a21c71">dupList</a> (<a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> t)</td></tr> <tr class="memdesc:a78a74353746ce9196baf5bfab7a21c71"><td class="mdescLeft"> </td><td class="mdescRight">Duplicate tree including siblings of root. <a href="#a78a74353746ce9196baf5bfab7a21c71">More...</a><br/></td></tr> <tr class="separator:a78a74353746ce9196baf5bfab7a21c71"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:afb94f89c2233918b2f8db2e89740b5c0"><td class="memItemLeft" align="right" valign="top"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#afb94f89c2233918b2f8db2e89740b5c0">dupTree</a> (<a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> t)</td></tr> <tr class="separator:afb94f89c2233918b2f8db2e89740b5c0"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ae0402b48fd8792961bc4ba1992e3805f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#ae0402b48fd8792961bc4ba1992e3805f">make</a> (std::vector< <a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> > &nodes)</td></tr> <tr class="separator:ae0402b48fd8792961bc4ba1992e3805f"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a186ad4df82551cde470a4fca863d5f9e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">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 class="separator:a186ad4df82551cde470a4fca863d5f9e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac9634c6fbd0a07454214fc68ec1a1973"><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="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> root)</td></tr> <tr class="memdesc:ac9634c6fbd0a07454214fc68ec1a1973"><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">More...</a><br/></td></tr> <tr class="separator:ac9634c6fbd0a07454214fc68ec1a1973"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab8f467998ab767e0aee88a3b736b0fa7"><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 class="separator:ab8f467998ab767e0aee88a3b736b0fa7"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a> Protected Member Functions</h2></td></tr> <tr class="memitem:a76aa8e4af4eb68d40ba28d4f7d6c469e"><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="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> current)</td></tr> <tr class="separator:a76aa8e4af4eb68d40ba28d4f7d6c469e"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a12e54c6d06779246aa2823cfd25a31fb"><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="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> current)</td></tr> <tr class="separator:a12e54c6d06779246aa2823cfd25a31fb"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4ae66873b11caacc90f48cc5ca967152"><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 class="separator:a4ae66873b11caacc90f48cc5ca967152"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab52e3f4268d49df3bb1b00a913abbca6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#ab52e3f4268d49df3bb1b00a913abbca6">getNodeOfType</a> (unsigned int type)</td></tr> <tr class="separator:ab52e3f4268d49df3bb1b00a913abbca6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a636d3e54488e7308577da8efd8c36214"><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 class="memdesc:a636d3e54488e7308577da8efd8c36214"><td class="mdescLeft"> </td><td class="mdescRight">get the name of the node 'type' <a href="#a636d3e54488e7308577da8efd8c36214">More...</a><br/></td></tr> <tr class="separator:a636d3e54488e7308577da8efd8c36214"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6f9a2eb1a3c134a9ad2f28c12e91a676"><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 class="separator:a6f9a2eb1a3c134a9ad2f28c12e91a676"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a> Protected Attributes</h2></td></tr> <tr class="memitem:a803fa045e14e331920a509f5a8dc84f1"><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 class="separator:a803fa045e14e331920a509f5a8dc84f1"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a853cf94e2d67392314cbba6d1118b22c"><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 class="separator:a853cf94e2d67392314cbba6d1118b22c"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a> Private Member Functions</h2></td></tr> <tr class="memitem:ad7faba28b1da373a3270aabb3d2c3d36"><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 class="separator:ad7faba28b1da373a3270aabb3d2c3d36"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5607adf1c02048930cb94cb6265bde13"><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> <tr class="separator:a5607adf1c02048930cb94cb6265bde13"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">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><h2 class="groupheader">Member Typedef Documentation</h2> <a class="anchor" id="a9c97858a3e774830ff79786df5e7eeb8"></a> <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> <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> <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> <h2 class="groupheader">Constructor & Destructor Documentation</h2> <a class="anchor" id="afd7f65cf43db744f2d702c6e7f6f2442"></a> <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> <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> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">ASTFactory::~ASTFactory </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">virtual</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Destroy factory. </p> <p>Delete <a class="el" href="classASTFactory.html">ASTFactory</a>. </p> </div> </div> <a class="anchor" id="ad7faba28b1da373a3270aabb3d2c3d36"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <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></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">private</span></span> </td> </tr> </table> </div><div class="memdoc"> </div> </div> <h2 class="groupheader">Member Function Documentation</h2> <a class="anchor" id="abb0d6c6064f96da88e4d757dfb8ad2d9"></a> <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="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">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> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <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></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> </div> </div> <a class="anchor" id="acd0c8fa258d0419b230c7b146d8abb67"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> ASTFactory::create </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">virtual</span></span> </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="a8298a8ad3504ef55fb0fd49d9156b02f"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">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> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">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> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> ASTFactory::create </td> <td>(</td> <td class="paramtype"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">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="ac12973204add38802871896f0e0a60c7"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> ASTFactory::create </td> <td>(</td> <td class="paramtype"><a class="el" href="TokenRefCount_8hpp.html#a90bf433b9f39606e6bf39757f6910ac7">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> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">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="af81063ee8ba6928502bc726f09d3049f"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> ASTFactory::dup </td> <td>(</td> <td class="paramtype"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">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> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> ASTFactory::dupList </td> <td>(</td> <td class="paramtype"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">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> <p>Duplicate tree including siblings of root. </p> </div> </div> <a class="anchor" id="afb94f89c2233918b2f8db2e89740b5c0"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> ASTFactory::dupTree </td> <td>(</td> <td class="paramtype"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">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> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <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></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> </div> </div> <a class="anchor" id="a636d3e54488e7308577da8efd8c36214"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <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></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>get the name of the node 'type' </p> </div> </div> <a class="anchor" id="ab52e3f4268d49df3bb1b00a913abbca6"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> ASTFactory::getNodeOfType </td> <td>(</td> <td class="paramtype">unsigned int </td> <td class="paramname"><em>type</em></td><td>)</td> <td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> </div> </div> <a class="anchor" id="a76aa8e4af4eb68d40ba28d4f7d6c469e"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <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="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> </td> <td class="paramname"><em>current</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> </div> </div> <a class="anchor" id="a12e54c6d06779246aa2823cfd25a31fb"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <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="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> </td> <td class="paramname"><em>current</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> </div> </div> <a class="anchor" id="ae0402b48fd8792961bc4ba1992e3805f"></a> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> ASTFactory::make </td> <td>(</td> <td class="paramtype">std::vector< <a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">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> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">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> <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="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">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> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <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></td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">private</span></span> </td> </tr> </table> </div><div class="memdoc"> </div> </div> <a class="anchor" id="a0e7fb1eefd7138f4766f7bd73683acef"></a> <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> <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> <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> <h2 class="groupheader">Member Data Documentation</h2> <a class="anchor" id="a803fa045e14e331920a509f5a8dc84f1"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classASTFactory.html#a9c97858a3e774830ff79786df5e7eeb8">factory_descriptor</a> ASTFactory::default_factory_descriptor</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </td> </tr> </table> </div><div class="memdoc"> </div> </div> <a class="anchor" id="a853cf94e2d67392314cbba6d1118b22c"></a> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classASTFactory.html#a5dd9db29bc09513ee1b8d669cd47177d">factory_descriptor_list</a> ASTFactory::nodeFactories</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">protected</span></span> </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><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Tue Oct 22 2013 08:10:58 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.8.5 </small></address> </body> </html>