KDevelop API Documentation

TokenStreamSelector.hpp

Go to the documentation of this file.
00001 #ifndef INC_TokenStreamSelector_hpp__
00002 #define INC_TokenStreamSelector_hpp__
00003 
00004 /* ANTLR Translator Generator
00005  * Project led by Terence Parr at http://www.jGuru.com
00006  * Software rights: http://www.antlr.org/RIGHTS.html
00007  *
00008  * $Id: TokenStreamSelector.hpp,v 1.2 2003/05/02 00:36:19 okellogg Exp $
00009  */
00010 
00011 #include <antlr/config.hpp>
00012 #include <antlr/TokenStream.hpp>
00013 #include <map>
00014 #include <stack>
00015 
00016 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
00017 namespace antlr {
00018 #endif
00019 
00027 class ANTLR_API TokenStreamSelector : public TokenStream {
00028 protected:
00030 #ifdef OS_NO_ALLOCATOR
00031     typedef ANTLR_USE_NAMESPACE(std)less<ANTLR_USE_NAMESPACE(std)string> lessp;
00032     typedef ANTLR_USE_NAMESPACE(std)map<ANTLR_USE_NAMESPACE(std)string,TokenStream*,lessp> inputStreamNames_coll;
00033 #else
00034     typedef ANTLR_USE_NAMESPACE(std)map<ANTLR_USE_NAMESPACE(std)string,TokenStream*> inputStreamNames_coll;
00035 #endif
00036     inputStreamNames_coll inputStreamNames;
00037 
00039     TokenStream* input;
00040 
00042 #ifdef OS_NO_ALLOCATOR
00043     typedef ANTLR_USE_NAMESPACE(std)stack<TokenStream*, ANTLR_USE_NAMESPACE(std)deque<TokenStream*> > streamStack_coll;
00044 #else
00045     typedef ANTLR_USE_NAMESPACE(std)stack<TokenStream*> streamStack_coll;
00046 #endif
00047     streamStack_coll streamStack;
00048 
00049 public:
00050     TokenStreamSelector();
00051     ~TokenStreamSelector();
00052 
00053     void addInputStream(TokenStream* stream, const ANTLR_USE_NAMESPACE(std)string& key);
00054 
00056     TokenStream* getCurrentStream() const;
00057 
00058     TokenStream* getStream(const ANTLR_USE_NAMESPACE(std)string& sname) const;
00059 
00060     RefToken nextToken();
00061 
00062     TokenStream* pop();
00063 
00064     void push(TokenStream* stream);
00065 
00066     void push(const ANTLR_USE_NAMESPACE(std)string& sname);
00067 
00075     void retry();
00076 
00078     void select(TokenStream* stream);
00079 
00080     void select(const ANTLR_USE_NAMESPACE(std)string& sname);
00081 };
00082 
00083 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
00084 }
00085 #endif
00086 
00087 #endif //INC_TokenStreamSelector_hpp__
KDE Logo
This file is part of the documentation for KDevelop Version 3.1.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Mar 23 00:03:50 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003