lex_stream.hpp
Go to the documentation of this file.
00001 /* 00002 Copyright 2005-2007 Adobe Systems Incorporated 00003 Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt 00004 or a copy at http://stlab.adobe.com/licenses.html) 00005 */ 00006 00007 /*************************************************************************************************/ 00008 00009 #ifndef ADOBE_LEX_STREAM_HPP 00010 #define ADOBE_LEX_STREAM_HPP 00011 00012 /*************************************************************************************************/ 00013 00014 #include <adobe/config.hpp> 00015 00016 #include <adobe/implementation/lex_stream_fwd.hpp> 00017 #include <adobe/istream.hpp> 00018 00019 #include <iosfwd> 00020 00021 /*************************************************************************************************/ 00022 00023 void swap(adobe::lex_stream_t&, adobe::lex_stream_t&); 00024 00025 /*************************************************************************************************/ 00026 00027 namespace adobe { 00028 00029 /*************************************************************************************************/ 00030 00031 class lex_stream_t 00032 { 00033 public: 00034 lex_stream_t(std::istream& in, const line_position_t& position); 00035 00036 #if !defined(ADOBE_NO_DOCUMENTATION) 00037 lex_stream_t(const lex_stream_t& rhs); 00038 00039 ~lex_stream_t(); 00040 00041 lex_stream_t& operator = (const lex_stream_t& rhs); 00042 #endif // !defined(ADOBE_NO_DOCUMENTATION) 00043 00044 const stream_lex_token_t& get(); 00045 00046 void putback(); 00047 00048 const line_position_t& next_position(); 00049 00050 void set_keyword_extension_lookup(const keyword_extension_lookup_proc_t& proc); 00051 00052 #if !defined(ADOBE_NO_DOCUMENTATION) 00053 private: 00054 friend void ::swap(adobe::lex_stream_t&, adobe::lex_stream_t&); 00055 00056 struct implementation_t; 00057 00058 implementation_t* object_m; 00059 #endif // !defined(ADOBE_NO_DOCUMENTATION) 00060 }; 00061 00062 /*************************************************************************************************/ 00063 00064 } // namespace adobe 00065 00066 /*************************************************************************************************/ 00067 00068 inline void swap(adobe::lex_stream_t& x, adobe::lex_stream_t& y) 00069 { 00070 std::swap(x.object_m, y.object_m); 00071 } 00072 00073 /*************************************************************************************************/ 00074 00075 #endif 00076 00077 /*************************************************************************************************/ |