]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/wave/include/boost/wave/grammars/cpp_defined_grammar_gen.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / wave / include / boost / wave / grammars / cpp_defined_grammar_gen.hpp
CommitLineData
7c673cae
FG
1/*=============================================================================
2 Boost.Wave: A Standard compliant C++ preprocessor library
3
4 http://www.boost.org/
5
6 Copyright (c) 2001-2012 Hartmut Kaiser. Distributed under the Boost
7 Software License, Version 1.0. (See accompanying file
8 LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9=============================================================================*/
10
11#if !defined(CPP_DEFINED_GRAMMAR_GEN_HPP_825BE9F5_98A3_400D_A97C_AD76B3B08632_INCLUDED)
12#define CPP_DEFINED_GRAMMAR_GEN_HPP_825BE9F5_98A3_400D_A97C_AD76B3B08632_INCLUDED
13
14#include <boost/wave/wave_config.hpp>
15
16#include <list>
17
18#include <boost/spirit/include/classic_parser.hpp>
19#include <boost/pool/pool_alloc.hpp>
20
21#include <boost/wave/util/unput_queue_iterator.hpp>
22
23// this must occur after all of the includes and before any code appears
24#ifdef BOOST_HAS_ABI_HEADERS
25#include BOOST_ABI_PREFIX
26#endif
27
28// suppress warnings about dependent classes not being exported from the dll
29#ifdef BOOST_MSVC
30#pragma warning(push)
31#pragma warning(disable : 4251 4231 4660)
32#endif
33
34///////////////////////////////////////////////////////////////////////////////
35namespace boost {
36namespace wave {
37namespace grammars {
38
39template <typename LexIteratorT>
40struct BOOST_WAVE_DECL defined_grammar_gen
41{
42 typedef typename LexIteratorT::token_type token_type;
43 typedef std::list<token_type, boost::fast_pool_allocator<token_type> >
44 token_sequence_type;
45
46// The parse_operator_defined function is instantiated manually twice to
47// simplify the explicit specialization of this template. This way the user
48// has only to specify one template parameter (the lexer iterator type) to
49// correctly formulate the required explicit specialization.
50// This results in no code overhead, because otherwise the function would be
51// generated by the compiler twice anyway.
52
53 typedef boost::wave::util::unput_queue_iterator<
54 typename token_sequence_type::iterator, token_type, token_sequence_type>
55 iterator1_type;
56
57 typedef boost::wave::util::unput_queue_iterator<
58 LexIteratorT, token_type, token_sequence_type>
59 iterator2_type;
60
61// parse the operator defined and return the found qualified name
62 static boost::spirit::classic::parse_info<iterator1_type>
63 parse_operator_defined (iterator1_type const &first,
64 iterator1_type const &last, token_sequence_type &found_qualified_name);
65
66 static boost::spirit::classic::parse_info<iterator2_type>
67 parse_operator_defined (iterator2_type const &first,
68 iterator2_type const &last, token_sequence_type &found_qualified_name);
69};
70
71///////////////////////////////////////////////////////////////////////////////
72} // namespace grammars
73} // namespace wave
74} // namespace boost
75
76#ifdef BOOST_MSVC
77#pragma warning(pop)
78#endif
79
80// the suffix header occurs after all of the code
81#ifdef BOOST_HAS_ABI_HEADERS
82#include BOOST_ABI_SUFFIX
83#endif
84
85#endif // !defined(CPP_DEFINED_GRAMMAR_GEN_HPP_825BE9F5_98A3_400D_A97C_AD76B3B08632_INCLUDED)