string_source.hh

Go to the documentation of this file.
00001 /*
00002    The lestes compiler suite
00003    Copyright (C) 2002, 2003, 2004, 2005 Miroslav Tichy
00004    Copyright (C) 2002, 2003, 2004, 2005 Petr Zika
00005    Copyright (C) 2002, 2003, 2004, 2005 Vojtech Hala
00006    Copyright (C) 2002, 2003, 2004, 2005 Jiri Kosina
00007    Copyright (C) 2002, 2003, 2004, 2005 Pavel Sanda
00008    Copyright (C) 2002, 2003, 2004, 2005 Jan Zouhar
00009    Copyright (C) 2002, 2003, 2004, 2005 Rudolf Thomas
00010 
00011    This program is free software; you can redistribute it and/or modify
00012    it under the terms of the GNU General Public License as published by
00013    the Free Software Foundation; version 2 of the License.
00014 
00015    This program is distributed in the hope that it will be useful,
00016    but WITHOUT ANY WARRANTY; without even the implied warranty of
00017    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018    GNU General Public License for more details.
00019 
00020    See the full text of the GNU General Public License version 2, and
00021    the limitations in the file doc/LICENSE.
00022 
00023    By accepting the license the licensee waives any and all claims
00024    against the copyright holder(s) related in whole or in part to the
00025    work, its use, and/or the inability to use it.
00026  
00027  */
00028 #ifndef lestes__lang__cplus__lex___string_source_hh___included
00029 #define lestes__lang__cplus__lex___string_source_hh___included
00030 
00031 /*! \file
00032   \brief String data source.
00033   
00034   Declaration of string_source class representing data source reading from string.
00035   \author pt
00036 */
00037 #include <lestes/common.hh>
00038 #include <lestes/lang/cplus/lex/data_source.hh>
00039 #include <lestes/lang/cplus/lex/ucn_token.hh>
00040 #include <string>
00041 package(lestes);
00042 package(lang);
00043 package(cplus);
00044 package(lex);
00045 
00046 /*!
00047   \brief String data source.
00048 
00049         Represents data source reading from host character string.
00050 */
00051 class string_source: public data_source {
00052 public:
00053         //! Type of string.
00054         typedef lstring string_type;
00055         //! Type of index into the string.
00056         typedef string_type::size_type index_type;
00057         //! Reads one token from string.
00058         ptr<ucn_token> read(void);
00059         //! Returns new instance, initializes with string.
00060         static ptr<string_source> create(const string_type &a_str);
00061 protected:
00062         //! Creates the object, initializes with string.
00063         string_source(const string_type &a_str);
00064 private:
00065         //! Hides copy constructor.
00066         string_source(const string_source &);
00067         //! Hides assignment operator.
00068         string_source &operator=(const string_source &);
00069         //! String to read from.
00070         string_type str;
00071         //! Position in string.
00072         index_type idx;
00073         // ! Direct reference to the stream.
00074         //::std::istream *stream;
00075 };
00076 
00077 end_package(lex);
00078 end_package(cplus);
00079 end_package(lang);
00080 end_package(lestes);
00081 
00082 #endif
00083 /* vim: set ft=lestes : */

Generated on Mon Feb 12 18:23:36 2007 for lestes by doxygen 1.5.1-20070107