Chris@16: /*============================================================================= Chris@16: Boost.Wave: A Standard compliant C++ preprocessor library Chris@16: Chris@16: http://www.boost.org/ Chris@16: Chris@16: Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost Chris@16: Software License, Version 1.0. (See accompanying file Chris@16: LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: =============================================================================*/ Chris@16: Chris@16: #if !defined(CPP_DEFINED_GRAMMAR_GEN_HPP_825BE9F5_98A3_400D_A97C_AD76B3B08632_INCLUDED) Chris@16: #define CPP_DEFINED_GRAMMAR_GEN_HPP_825BE9F5_98A3_400D_A97C_AD76B3B08632_INCLUDED Chris@16: Chris@16: #include Chris@16: Chris@16: #include Chris@16: Chris@16: #include Chris@16: #include Chris@16: Chris@16: #include Chris@16: Chris@16: // this must occur after all of the includes and before any code appears Chris@16: #ifdef BOOST_HAS_ABI_HEADERS Chris@16: #include BOOST_ABI_PREFIX Chris@16: #endif Chris@16: Chris@16: // suppress warnings about dependent classes not being exported from the dll Chris@16: #ifdef BOOST_MSVC Chris@16: #pragma warning(push) Chris@16: #pragma warning(disable : 4251 4231 4660) Chris@16: #endif Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: namespace boost { Chris@16: namespace wave { Chris@16: namespace grammars { Chris@16: Chris@16: template Chris@16: struct BOOST_WAVE_DECL defined_grammar_gen Chris@16: { Chris@16: typedef typename LexIteratorT::token_type token_type; Chris@16: typedef std::list > Chris@16: token_sequence_type; Chris@16: Chris@16: // The parse_operator_defined function is instantiated manually twice to Chris@16: // simplify the explicit specialization of this template. This way the user Chris@16: // has only to specify one template parameter (the lexer iterator type) to Chris@16: // correctly formulate the required explicit specialization. Chris@16: // This results in no code overhead, because otherwise the function would be Chris@16: // generated by the compiler twice anyway. Chris@16: Chris@16: typedef boost::wave::util::unput_queue_iterator< Chris@16: typename token_sequence_type::iterator, token_type, token_sequence_type> Chris@16: iterator1_type; Chris@16: Chris@16: typedef boost::wave::util::unput_queue_iterator< Chris@16: LexIteratorT, token_type, token_sequence_type> Chris@16: iterator2_type; Chris@16: Chris@16: // parse the operator defined and return the found qualified name Chris@16: static boost::spirit::classic::parse_info Chris@16: parse_operator_defined (iterator1_type const &first, Chris@16: iterator1_type const &last, token_sequence_type &found_qualified_name); Chris@16: Chris@16: static boost::spirit::classic::parse_info Chris@16: parse_operator_defined (iterator2_type const &first, Chris@16: iterator2_type const &last, token_sequence_type &found_qualified_name); Chris@16: }; Chris@16: Chris@16: /////////////////////////////////////////////////////////////////////////////// Chris@16: } // namespace grammars Chris@16: } // namespace wave Chris@16: } // namespace boost Chris@16: Chris@16: #ifdef BOOST_MSVC Chris@16: #pragma warning(pop) Chris@16: #endif Chris@16: Chris@16: // the suffix header occurs after all of the code Chris@16: #ifdef BOOST_HAS_ABI_HEADERS Chris@16: #include BOOST_ABI_SUFFIX Chris@16: #endif Chris@16: Chris@16: #endif // !defined(CPP_DEFINED_GRAMMAR_GEN_HPP_825BE9F5_98A3_400D_A97C_AD76B3B08632_INCLUDED)