<!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.14"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <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/searchdata.js"></script> <script type="text/javascript" src="search/search.js"></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 id="projectalign" 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.14 --> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ var searchBox = new SearchBox("searchBox", "search",false,'Search'); /* @license-end */ </script> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(function() { initMenu('',true,false,'search.php','Search'); $(document).ready(function() { init_search(); }); }); /* @license-end */</script> <div id="main-nav"></div> <!-- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> </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#a46308aec6ca268fe522df4903cd52db9">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:a204bfcd8e71701315e4974cc1833f0ea"><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#a204bfcd8e71701315e4974cc1833f0ea">create</a> (int type, const std ::string &txt)</td></tr> <tr class="memdesc:a204bfcd8e71701315e4974cc1833f0ea"><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="#a204bfcd8e71701315e4974cc1833f0ea">More...</a><br /></td></tr> <tr class="separator:a204bfcd8e71701315e4974cc1833f0ea"><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:a0d0748ca13951d8e3f7baa9c7921a06e"><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#a0d0748ca13951d8e3f7baa9c7921a06e">create</a> (const std ::string &txt, std ::istream &infile)</td></tr> <tr class="memdesc:a0d0748ca13951d8e3f7baa9c7921a06e"><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="#a0d0748ca13951d8e3f7baa9c7921a06e">More...</a><br /></td></tr> <tr class="separator:a0d0748ca13951d8e3f7baa9c7921a06e"><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:a8eafc95367507e30bad8821fdc8fabb2"><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#a8eafc95367507e30bad8821fdc8fabb2">make</a> (std ::vector< <a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> > &nodes)</td></tr> <tr class="separator:a8eafc95367507e30bad8821fdc8fabb2"><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:a9c2ccd8a45a386b46519c0a37786b588"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#a9c2ccd8a45a386b46519c0a37786b588">loadChildren</a> (std ::istream &infile, <a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> current)</td></tr> <tr class="separator:a9c2ccd8a45a386b46519c0a37786b588"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af1445003d52d1f636d057dd8d3a06a72"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#af1445003d52d1f636d057dd8d3a06a72">loadSiblings</a> (std ::istream &infile, <a class="el" href="ASTRefCount_8hpp.html#a25b300faa8730e33c35b83c55afd2596">RefAST</a> current)</td></tr> <tr class="separator:af1445003d52d1f636d057dd8d3a06a72"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac4f1d8cfd24031cb3808c1718c14c8a7"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classASTFactory.html#ac4f1d8cfd24031cb3808c1718c14c8a7">checkCloseTag</a> (std ::istream &infile)</td></tr> <tr class="separator:ac4f1d8cfd24031cb3808c1718c14c8a7"><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 id="a9c97858a3e774830ff79786df5e7eeb8"></a> <h2 class="memtitle"><span class="permalink"><a href="#a9c97858a3e774830ff79786df5e7eeb8">◆ </a></span>factory_descriptor</h2> <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 id="a5dd9db29bc09513ee1b8d669cd47177d"></a> <h2 class="memtitle"><span class="permalink"><a href="#a5dd9db29bc09513ee1b8d669cd47177d">◆ </a></span>factory_descriptor_list</h2> <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 id="ab1f4d9a4164b3fdbc108cd80c4a90c91"></a> <h2 class="memtitle"><span class="permalink"><a href="#ab1f4d9a4164b3fdbc108cd80c4a90c91">◆ </a></span>factory_type</h2> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef <a class="el" href="ASTFactory_8hpp.html#a46308aec6ca268fe522df4903cd52db9">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 id="afd7f65cf43db744f2d702c6e7f6f2442"></a> <h2 class="memtitle"><span class="permalink"><a href="#afd7f65cf43db744f2d702c6e7f6f2442">◆ </a></span>ASTFactory() <span class="overload">[1/3]</span></h2> <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 id="a00f1b0f6666c42d4524458d26898b4ed"></a> <h2 class="memtitle"><span class="permalink"><a href="#a00f1b0f6666c42d4524458d26898b4ed">◆ </a></span>ASTFactory() <span class="overload">[2/3]</span></h2> <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 id="acdf5532a1a16457623335fffcd8ff96e"></a> <h2 class="memtitle"><span class="permalink"><a href="#acdf5532a1a16457623335fffcd8ff96e">◆ </a></span>~ASTFactory()</h2> <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 id="ad7faba28b1da373a3270aabb3d2c3d36"></a> <h2 class="memtitle"><span class="permalink"><a href="#ad7faba28b1da373a3270aabb3d2c3d36">◆ </a></span>ASTFactory() <span class="overload">[3/3]</span></h2> <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 id="abb0d6c6064f96da88e4d757dfb8ad2d9"></a> <h2 class="memtitle"><span class="permalink"><a href="#abb0d6c6064f96da88e4d757dfb8ad2d9">◆ </a></span>addASTChild()</h2> <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 id="ac4f1d8cfd24031cb3808c1718c14c8a7"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac4f1d8cfd24031cb3808c1718c14c8a7">◆ </a></span>checkCloseTag()</h2> <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 id="acd0c8fa258d0419b230c7b146d8abb67"></a> <h2 class="memtitle"><span class="permalink"><a href="#acd0c8fa258d0419b230c7b146d8abb67">◆ </a></span>create() <span class="overload">[1/6]</span></h2> <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 id="a8298a8ad3504ef55fb0fd49d9156b02f"></a> <h2 class="memtitle"><span class="permalink"><a href="#a8298a8ad3504ef55fb0fd49d9156b02f">◆ </a></span>create() <span class="overload">[2/6]</span></h2> <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 id="a204bfcd8e71701315e4974cc1833f0ea"></a> <h2 class="memtitle"><span class="permalink"><a href="#a204bfcd8e71701315e4974cc1833f0ea">◆ </a></span>create() <span class="overload">[3/6]</span></h2> <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 id="a8b1a67e507c5d7ee83414ab03b854346"></a> <h2 class="memtitle"><span class="permalink"><a href="#a8b1a67e507c5d7ee83414ab03b854346">◆ </a></span>create() <span class="overload">[4/6]</span></h2> <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 id="ac12973204add38802871896f0e0a60c7"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac12973204add38802871896f0e0a60c7">◆ </a></span>create() <span class="overload">[5/6]</span></h2> <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 id="a0d0748ca13951d8e3f7baa9c7921a06e"></a> <h2 class="memtitle"><span class="permalink"><a href="#a0d0748ca13951d8e3f7baa9c7921a06e">◆ </a></span>create() <span class="overload">[6/6]</span></h2> <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 id="af81063ee8ba6928502bc726f09d3049f"></a> <h2 class="memtitle"><span class="permalink"><a href="#af81063ee8ba6928502bc726f09d3049f">◆ </a></span>dup()</h2> <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 id="a78a74353746ce9196baf5bfab7a21c71"></a> <h2 class="memtitle"><span class="permalink"><a href="#a78a74353746ce9196baf5bfab7a21c71">◆ </a></span>dupList()</h2> <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 id="afb94f89c2233918b2f8db2e89740b5c0"></a> <h2 class="memtitle"><span class="permalink"><a href="#afb94f89c2233918b2f8db2e89740b5c0">◆ </a></span>dupTree()</h2> <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 id="a6f9a2eb1a3c134a9ad2f28c12e91a676"></a> <h2 class="memtitle"><span class="permalink"><a href="#a6f9a2eb1a3c134a9ad2f28c12e91a676">◆ </a></span>getASTNodeFactory()</h2> <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 id="a636d3e54488e7308577da8efd8c36214"></a> <h2 class="memtitle"><span class="permalink"><a href="#a636d3e54488e7308577da8efd8c36214">◆ </a></span>getASTNodeType()</h2> <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 id="ab52e3f4268d49df3bb1b00a913abbca6"></a> <h2 class="memtitle"><span class="permalink"><a href="#ab52e3f4268d49df3bb1b00a913abbca6">◆ </a></span>getNodeOfType()</h2> <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 id="a9c2ccd8a45a386b46519c0a37786b588"></a> <h2 class="memtitle"><span class="permalink"><a href="#a9c2ccd8a45a386b46519c0a37786b588">◆ </a></span>loadChildren()</h2> <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 id="af1445003d52d1f636d057dd8d3a06a72"></a> <h2 class="memtitle"><span class="permalink"><a href="#af1445003d52d1f636d057dd8d3a06a72">◆ </a></span>loadSiblings()</h2> <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 id="a8eafc95367507e30bad8821fdc8fabb2"></a> <h2 class="memtitle"><span class="permalink"><a href="#a8eafc95367507e30bad8821fdc8fabb2">◆ </a></span>make() <span class="overload">[1/2]</span></h2> <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 id="a186ad4df82551cde470a4fca863d5f9e"></a> <h2 class="memtitle"><span class="permalink"><a href="#a186ad4df82551cde470a4fca863d5f9e">◆ </a></span>make() <span class="overload">[2/2]</span></h2> <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 id="ac9634c6fbd0a07454214fc68ec1a1973"></a> <h2 class="memtitle"><span class="permalink"><a href="#ac9634c6fbd0a07454214fc68ec1a1973">◆ </a></span>makeASTRoot()</h2> <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 id="a5607adf1c02048930cb94cb6265bde13"></a> <h2 class="memtitle"><span class="permalink"><a href="#a5607adf1c02048930cb94cb6265bde13">◆ </a></span>operator=()</h2> <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 id="a0e7fb1eefd7138f4766f7bd73683acef"></a> <h2 class="memtitle"><span class="permalink"><a href="#a0e7fb1eefd7138f4766f7bd73683acef">◆ </a></span>registerFactory()</h2> <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 id="ab8f467998ab767e0aee88a3b736b0fa7"></a> <h2 class="memtitle"><span class="permalink"><a href="#ab8f467998ab767e0aee88a3b736b0fa7">◆ </a></span>setASTNodeFactory()</h2> <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 id="add369568ba81b66258154baf6a5997f3"></a> <h2 class="memtitle"><span class="permalink"><a href="#add369568ba81b66258154baf6a5997f3">◆ </a></span>setMaxNodeType()</h2> <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 id="a803fa045e14e331920a509f5a8dc84f1"></a> <h2 class="memtitle"><span class="permalink"><a href="#a803fa045e14e331920a509f5a8dc84f1">◆ </a></span>default_factory_descriptor</h2> <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 id="a853cf94e2d67392314cbba6d1118b22c"></a> <h2 class="memtitle"><span class="permalink"><a href="#a853cf94e2d67392314cbba6d1118b22c">◆ </a></span>nodeFactories</h2> <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 by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.14 </small></address> </body> </html>