Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-30 10:02:17

0001 /*=============================================================================
0002     Boost.Wave: A Standard compliant C++ preprocessor library
0003 
0004     Definition of the abstract lexer interface
0005 
0006     http://www.boost.org/
0007 
0008     Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost
0009     Software License, Version 1.0. (See accompanying file
0010     LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
0011 =============================================================================*/
0012 
0013 #if !defined(BOOST_CPP_LEX_INTERFACE_HPP_E83F52A4_90AC_4FBE_A9A7_B65F7F94C497_INCLUDED)
0014 #define BOOST_CPP_LEX_INTERFACE_HPP_E83F52A4_90AC_4FBE_A9A7_B65F7F94C497_INCLUDED
0015 
0016 #include <boost/wave/wave_config.hpp>
0017 #include <boost/wave/util/file_position.hpp>
0018 #include <boost/wave/language_support.hpp>
0019 
0020 // this must occur after all of the includes and before any code appears
0021 #ifdef BOOST_HAS_ABI_HEADERS
0022 #include BOOST_ABI_PREFIX
0023 #endif
0024 
0025 // suppress warnings about dependent classes not being exported from the dll
0026 #ifdef BOOST_MSVC
0027 #pragma warning(push)
0028 #pragma warning(disable : 4251 4231 4660)
0029 #endif
0030 
0031 ///////////////////////////////////////////////////////////////////////////////
0032 namespace boost {
0033 namespace wave {
0034 namespace cpplexer {
0035 
0036 ///////////////////////////////////////////////////////////////////////////////
0037 //
0038 //  The lex_input_interface decouples the lex_iterator_shim from the actual
0039 //  lexer. This is done to allow compile time reduction.
0040 //  Thanks to JCAB for having this idea.
0041 //
0042 ///////////////////////////////////////////////////////////////////////////////
0043 
0044 template <typename TokenT>
0045 struct lex_input_interface
0046 {
0047     typedef typename TokenT::position_type position_type;
0048 
0049     lex_input_interface() {}
0050     virtual ~lex_input_interface() {}
0051 
0052     virtual TokenT& get(TokenT&) = 0;
0053     virtual void set_position(position_type const &pos) = 0;
0054 #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
0055     virtual bool has_include_guards(std::string& guard_name) const = 0;
0056 #endif
0057 };
0058 
0059 ///////////////////////////////////////////////////////////////////////////////
0060 }   // namespace cpplexer
0061 }   // namespace wave
0062 }   // namespace boost
0063 
0064 #ifdef BOOST_MSVC
0065 #pragma warning(pop)
0066 #endif
0067 
0068 // the suffix header occurs after all of the code
0069 #ifdef BOOST_HAS_ABI_HEADERS
0070 #include BOOST_ABI_SUFFIX
0071 #endif
0072 
0073 #endif // !defined(BOOST_CPP_LEX_INTERFACE_HPP_E83F52A4_90AC_4FBE_A9A7_B65F7F94C497_INCLUDED)