<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>ANTLR Support Libraries 2.7.1+: TokenStreamSelector Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="search/search.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="search/search.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body onload='searchBox.OnSelectItem(0);'> <!-- Generated by Doxygen 1.7.3 --> <script type="text/javascript"><!-- var searchBox = new SearchBox("searchBox", "search",false,'Search'); --></script> <div id="top"> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">ANTLR Support Libraries 2.7.1+</div> </td> </tr> </tbody> </table> </div> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li id="searchli"> <div id="MSearchBox" class="MSearchBoxInactive"> <span class="left"> <img id="MSearchSelect" src="search/mag_sel.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/> <input type="text" id="MSearchField" value="Search" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/> </span><span class="right"> <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> </span> </div> </li> </ul> </div> <div id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="inherits.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#pub-methods">Public Member Functions</a> | <a href="#pro-types">Protected Types</a> | <a href="#pro-attribs">Protected Attributes</a> </div> <div class="headertitle"> <h1>TokenStreamSelector Class Reference</h1> </div> </div> <div class="contents"> <!-- doxytag: class="TokenStreamSelector" --><!-- doxytag: inherits="TokenStream" --> <p><code>#include <<a class="el" href="TokenStreamSelector_8hpp_source.html">TokenStreamSelector.hpp</a>></code></p> <div class="dynheader"> Inheritance diagram for TokenStreamSelector:</div> <div class="dyncontent"> <div class="center"><img src="classTokenStreamSelector__inherit__graph.png" border="0" usemap="#TokenStreamSelector_inherit__map" alt="Inheritance graph"/></div> <map name="TokenStreamSelector_inherit__map" id="TokenStreamSelector_inherit__map"> </map> <center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> <div class="dynheader"> Collaboration diagram for TokenStreamSelector:</div> <div class="dyncontent"> <div class="center"><img src="classTokenStreamSelector__coll__graph.png" border="0" usemap="#TokenStreamSelector_coll__map" alt="Collaboration graph"/></div> <map name="TokenStreamSelector_coll__map" id="TokenStreamSelector_coll__map"> </map> <center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div> <p><a href="classTokenStreamSelector-members.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classTokenStreamSelector.html#ab466cef9b913b7204f9071a3f86199a3">TokenStreamSelector</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classTokenStreamSelector.html#a227f943983c909715ac4b0971139c608">~TokenStreamSelector</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classTokenStreamSelector.html#a96494c687ce14e5ac34d286267a24b51">addInputStream</a> (<a class="el" href="classTokenStream.html">TokenStream</a> *stream, const std::string &key)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTokenStream.html">TokenStream</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTokenStreamSelector.html#a9c9e775b13755b40b2683b8d4c80580e">getCurrentStream</a> () const </td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">Return the stream from which tokens are being pulled at the moment. <a href="#a9c9e775b13755b40b2683b8d4c80580e"></a><br/></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTokenStream.html">TokenStream</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTokenStreamSelector.html#aa11e22d958a9916e9d47596b698fae78">getStream</a> (const std::string &sname) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTokenRefCount.html">RefToken</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classTokenStreamSelector.html#a1c66956edf806b9b8deda2b2ed4f186f">nextToken</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTokenStream.html">TokenStream</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTokenStreamSelector.html#afcce708bc4810b1484e7b09d166c7d8b">pop</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classTokenStreamSelector.html#a11b65e7d1e49c7ca5c967a401ea8011c">push</a> (<a class="el" href="classTokenStream.html">TokenStream</a> *stream)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classTokenStreamSelector.html#aa5521e715c445c9f62ef5b951f7ad8e6">push</a> (const std::string &sname)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classTokenStreamSelector.html#ab58070e22549c3927aa15ae43844f01c">retry</a> ()</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classTokenStreamSelector.html#af398d84e1d41fccf22e3ca3948e4bc52">select</a> (<a class="el" href="classTokenStream.html">TokenStream</a> *stream)</td></tr> <tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classTokenStreamSelector.html#ae31553f18a76bc7e6e30d305d8409b09">select</a> (const std::string &sname)</td></tr> <tr><td colspan="2"><h2><a name="pro-types"></a> Protected Types</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef std::map< std::string, <br class="typebreak"/> <a class="el" href="classTokenStream.html">TokenStream</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classTokenStreamSelector.html#a506158cef7e075fbacef661443406760">inputStreamNames_coll</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top">typedef std::stack< <a class="el" href="classTokenStream.html">TokenStream</a> * > </td><td class="memItemRight" valign="bottom"><a class="el" href="classTokenStreamSelector.html#a7f2344471e0c5608d0c8807003a7b2f6">streamStack_coll</a></td></tr> <tr><td colspan="2"><h2><a name="pro-attribs"></a> Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTokenStreamSelector.html#a506158cef7e075fbacef661443406760">inputStreamNames_coll</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classTokenStreamSelector.html#a813b56764fcc3212099dd1dc9a7321e2">inputStreamNames</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTokenStream.html">TokenStream</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classTokenStreamSelector.html#a9db077f4cad8b058035a0cdc6b180f1a">input</a></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classTokenStreamSelector.html#a7f2344471e0c5608d0c8807003a7b2f6">streamStack_coll</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classTokenStreamSelector.html#a39577885c4eb1067d28f3297efd20c19">streamStack</a></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <div class="textblock"><p>A token stream MUX (multiplexor) knows about n token streams and can multiplex them onto the same channel for use by token stream consumer like a parser. This is a way to have multiple lexers break up the same input stream for a single parser. Or, you can have multiple instances of the same lexer handle multiple input streams; this works great for includes. </p> </div><hr/><h2>Member Typedef Documentation</h2> <a class="anchor" id="a506158cef7e075fbacef661443406760"></a><!-- doxytag: member="TokenStreamSelector::inputStreamNames_coll" ref="a506158cef7e075fbacef661443406760" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef std ::map< std ::string,<a class="el" href="classTokenStream.html">TokenStream</a>*> <a class="el" href="classTokenStreamSelector.html#a506158cef7e075fbacef661443406760">TokenStreamSelector::inputStreamNames_coll</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p>The set of inputs to the MUX </p> </div> </div> <a class="anchor" id="a7f2344471e0c5608d0c8807003a7b2f6"></a><!-- doxytag: member="TokenStreamSelector::streamStack_coll" ref="a7f2344471e0c5608d0c8807003a7b2f6" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">typedef std ::stack<<a class="el" href="classTokenStream.html">TokenStream</a>*> <a class="el" href="classTokenStreamSelector.html#a7f2344471e0c5608d0c8807003a7b2f6">TokenStreamSelector::streamStack_coll</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Used to track stack of input streams </p> </div> </div> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="ab466cef9b913b7204f9071a3f86199a3"></a><!-- doxytag: member="TokenStreamSelector::TokenStreamSelector" ref="ab466cef9b913b7204f9071a3f86199a3" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">TokenStreamSelector::TokenStreamSelector </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>A token stream MUX (multiplexor) knows about n token streams and can multiplex them onto the same channel for use by token stream consumer like a parser. This is a way to have multiple lexers break up the same input stream for a single parser. Or, you can have multiple instances of the same lexer handle multiple input streams; this works great for includes. </p> </div> </div> <a class="anchor" id="a227f943983c909715ac4b0971139c608"></a><!-- doxytag: member="TokenStreamSelector::~TokenStreamSelector" ref="a227f943983c909715ac4b0971139c608" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">TokenStreamSelector::~TokenStreamSelector </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="a96494c687ce14e5ac34d286267a24b51"></a><!-- doxytag: member="TokenStreamSelector::addInputStream" ref="a96494c687ce14e5ac34d286267a24b51" args="(TokenStream *stream, const std::string &key)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TokenStreamSelector::addInputStream </td> <td>(</td> <td class="paramtype"><a class="el" href="classTokenStream.html">TokenStream</a> * </td> <td class="paramname"><em>stream</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const std::string & </td> <td class="paramname"><em>key</em> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a9c9e775b13755b40b2683b8d4c80580e"></a><!-- doxytag: member="TokenStreamSelector::getCurrentStream" ref="a9c9e775b13755b40b2683b8d4c80580e" args="() const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTokenStream.html">TokenStream</a> * TokenStreamSelector::getCurrentStream </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </div> <div class="memdoc"> <p>Return the stream from which tokens are being pulled at the moment. </p> </div> </div> <a class="anchor" id="aa11e22d958a9916e9d47596b698fae78"></a><!-- doxytag: member="TokenStreamSelector::getStream" ref="aa11e22d958a9916e9d47596b698fae78" args="(const std::string &sname) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTokenStream.html">TokenStream</a> * TokenStreamSelector::getStream </td> <td>(</td> <td class="paramtype">const std::string & </td> <td class="paramname"><em>sname</em></td><td>)</td> <td> const</td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a1c66956edf806b9b8deda2b2ed4f186f"></a><!-- doxytag: member="TokenStreamSelector::nextToken" ref="a1c66956edf806b9b8deda2b2ed4f186f" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTokenRefCount.html">RefToken</a> TokenStreamSelector::nextToken </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td><td>)</td> <td><code> [virtual]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Implements <a class="el" href="classTokenStream.html#a61924e42db11666ccba689bfc2632c46">TokenStream</a>.</p> </div> </div> <a class="anchor" id="afcce708bc4810b1484e7b09d166c7d8b"></a><!-- doxytag: member="TokenStreamSelector::pop" ref="afcce708bc4810b1484e7b09d166c7d8b" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTokenStream.html">TokenStream</a> * TokenStreamSelector::pop </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="aa5521e715c445c9f62ef5b951f7ad8e6"></a><!-- doxytag: member="TokenStreamSelector::push" ref="aa5521e715c445c9f62ef5b951f7ad8e6" args="(const std::string &sname)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TokenStreamSelector::push </td> <td>(</td> <td class="paramtype">const std::string & </td> <td class="paramname"><em>sname</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a11b65e7d1e49c7ca5c967a401ea8011c"></a><!-- doxytag: member="TokenStreamSelector::push" ref="a11b65e7d1e49c7ca5c967a401ea8011c" args="(TokenStream *stream)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TokenStreamSelector::push </td> <td>(</td> <td class="paramtype"><a class="el" href="classTokenStream.html">TokenStream</a> * </td> <td class="paramname"><em>stream</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="ab58070e22549c3927aa15ae43844f01c"></a><!-- doxytag: member="TokenStreamSelector::retry" ref="ab58070e22549c3927aa15ae43844f01c" args="()" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TokenStreamSelector::retry </td> <td>(</td> <td class="paramname"></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Abort recognition of current <a class="el" href="classToken.html">Token</a> and try again. A stream can push a new stream (for include files for example, and then <a class="el" href="classTokenStreamSelector.html#ab58070e22549c3927aa15ae43844f01c">retry()</a>, which will cause the current stream to abort back to this.nextToken(). this.nextToken() then asks for a token from the current stream, which is the new "substream." </p> </div> </div> <a class="anchor" id="ae31553f18a76bc7e6e30d305d8409b09"></a><!-- doxytag: member="TokenStreamSelector::select" ref="ae31553f18a76bc7e6e30d305d8409b09" args="(const std::string &sname)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TokenStreamSelector::select </td> <td>(</td> <td class="paramtype">const std::string & </td> <td class="paramname"><em>sname</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="af398d84e1d41fccf22e3ca3948e4bc52"></a><!-- doxytag: member="TokenStreamSelector::select" ref="af398d84e1d41fccf22e3ca3948e4bc52" args="(TokenStream *stream)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">void TokenStreamSelector::select </td> <td>(</td> <td class="paramtype"><a class="el" href="classTokenStream.html">TokenStream</a> * </td> <td class="paramname"><em>stream</em></td><td>)</td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Set the stream without pushing old stream </p> </div> </div> <hr/><h2>Member Data Documentation</h2> <a class="anchor" id="a9db077f4cad8b058035a0cdc6b180f1a"></a><!-- doxytag: member="TokenStreamSelector::input" ref="a9db077f4cad8b058035a0cdc6b180f1a" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTokenStream.html">TokenStream</a>* <a class="el" href="classTokenStreamSelector.html#a9db077f4cad8b058035a0cdc6b180f1a">TokenStreamSelector::input</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> <p>The currently-selected token stream input </p> </div> </div> <a class="anchor" id="a813b56764fcc3212099dd1dc9a7321e2"></a><!-- doxytag: member="TokenStreamSelector::inputStreamNames" ref="a813b56764fcc3212099dd1dc9a7321e2" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTokenStreamSelector.html#a506158cef7e075fbacef661443406760">inputStreamNames_coll</a> <a class="el" href="classTokenStreamSelector.html#a813b56764fcc3212099dd1dc9a7321e2">TokenStreamSelector::inputStreamNames</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <a class="anchor" id="a39577885c4eb1067d28f3297efd20c19"></a><!-- doxytag: member="TokenStreamSelector::streamStack" ref="a39577885c4eb1067d28f3297efd20c19" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname"><a class="el" href="classTokenStreamSelector.html#a7f2344471e0c5608d0c8807003a7b2f6">streamStack_coll</a> <a class="el" href="classTokenStreamSelector.html#a39577885c4eb1067d28f3297efd20c19">TokenStreamSelector::streamStack</a><code> [protected]</code></td> </tr> </table> </div> <div class="memdoc"> </div> </div> <hr/>The documentation for this class was generated from the following files:<ul> <li>antlr/<a class="el" href="TokenStreamSelector_8hpp_source.html">TokenStreamSelector.hpp</a></li> <li>src/<a class="el" href="TokenStreamSelector_8cpp.html">TokenStreamSelector.cpp</a></li> </ul> </div> <!--- window showing the filter options --> <div id="MSearchSelectWindow" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" onkeydown="return searchBox.OnSearchSelectKey(event)"> <a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark"> </span>Defines</a></div> <!-- iframe showing the search results (closed by default) --> <div id="MSearchResultsWindow"> <iframe src="" frameborder="0" name="MSearchResults" id="MSearchResults"> </iframe> </div> <hr class="footer"/><address class="footer"><small>Generated on Fri Mar 25 2011 for ANTLR Support Libraries 2.7.1+ by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address> </body> </html>