1 /*============================================================================= 2 Boost.Wave: A Standard compliant C++ preprocessor library 3 Explicit instantiation of the lex_functor generation function 4 5 http://www.boost.org/ 6 7 Copyright (c) 2001-2010 Hartmut Kaiser. Distributed under the Boost 8 Software License, Version 1.0. (See accompanying file 9 LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 10 =============================================================================*/ 11 12 #define BOOST_WAVE_SOURCE 1 13 #include <boost/wave/wave_config.hpp> // configuration data 14 15 #if BOOST_WAVE_SEPARATE_LEXER_INSTANTIATION != 0 16 17 #include <string> 18 19 #include <boost/wave/token_ids.hpp> 20 21 #include "real_position_token.hpp" // token class 22 #include <boost/wave/cpplexer/cpp_lex_iterator.hpp> 23 24 /////////////////////////////////////////////////////////////////////////////// 25 // The following file needs to be included only once throughout the whole 26 // program. 27 #include <boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp> 28 29 // this must occur after all of the includes and before any code appears 30 #ifdef BOOST_HAS_ABI_HEADERS 31 #include BOOST_ABI_PREFIX 32 #endif 33 34 /////////////////////////////////////////////////////////////////////////////// 35 // 36 // If you've used another iterator type than std::string::iterator, you have to 37 // instantiate the new_lexer_gen<> template for this iterator type too. 38 // The reason is, that the library internally uses the new_lexer_gen<> 39 // template with a std::string::iterator. 40 // 41 // This is moved into a separate compilation unit to decouple the compilation 42 // of the C++ lexer from the compilation of the other modules, which helps to 43 // reduce compilation time. 44 // 45 // The template parameter(s) supplied should be identical to the first 46 // parameter supplied while instantiating the boost::wave::context<> template 47 // (see the file cpp.cpp). 48 // 49 /////////////////////////////////////////////////////////////////////////////// 50 51 #if !defined(BOOST_WAVE_STRINGTYPE_USE_STDSTRING) 52 template struct boost::wave::cpplexer::new_lexer_gen<std::string::iterator>; 53 template struct boost::wave::cpplexer::new_lexer_gen<std::string::const_iterator>; 54 #endif 55 56 // the suffix header occurs after all of the code 57 #ifdef BOOST_HAS_ABI_HEADERS 58 #include BOOST_ABI_SUFFIX 59 #endif 60 61 #endif // BOOST_WAVE_SEPARATE_LEXER_INSTANTIATION != 0 62