]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/spirit/include/boost/spirit/home/support/iterators/multi_pass_fwd.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / spirit / include / boost / spirit / home / support / iterators / multi_pass_fwd.hpp
CommitLineData
7c673cae
FG
1/*=============================================================================
2 Copyright (c) 2007 Tobias Schwinger
3 Copyright (c) 2001-2011 Hartmut Kaiser
4 http://spirit.sourceforge.net/
5
6 Distributed under the Boost Software License, Version 1.0. (See accompanying
7 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
8=============================================================================*/
9#if !defined(BOOST_SPIRIT_ITERATOR_MULTI_PASS_FWD_APR_18_2008_1102AM)
10#define BOOST_SPIRIT_ITERATOR_MULTI_PASS_FWD_APR_18_2008_1102AM
11
12#include <cstddef>
13#include <boost/spirit/home/support/multi_pass_wrapper.hpp>
14#include <boost/swap.hpp>
15
16namespace boost { namespace spirit {
17
18 namespace iterator_policies
19 {
20 // input policies
21 struct input_iterator;
22 struct buffering_input_iterator;
23 struct istream;
24 struct lex_input;
25 struct functor_input;
26 struct split_functor_input;
27
28 // ownership policies
29 struct ref_counted;
30 struct first_owner;
31
32 // checking policies
33 class illegal_backtracking;
34 struct buf_id_check;
35 struct no_check;
36
37 // storage policies
38 struct split_std_deque;
39 template<std::size_t N> struct fixed_size_queue;
40
41 // policy combiner
42#if defined(BOOST_SPIRIT_DEBUG)
43 template<typename Ownership = ref_counted
44 , typename Checking = buf_id_check
45 , typename Input = buffering_input_iterator
46 , typename Storage = split_std_deque>
47 struct default_policy;
48#else
49 template<typename Ownership = ref_counted
50 , typename Checking = no_check
51 , typename Input = buffering_input_iterator
52 , typename Storage = split_std_deque>
53 struct default_policy;
54#endif
55 }
56
57 template <typename T
58 , typename Policies = iterator_policies::default_policy<> >
59 class multi_pass;
60
61 template <typename T, typename Policies>
62 void swap(multi_pass<T, Policies> &x, multi_pass<T, Policies> &y);
63
64}} // namespace boost::spirit
65
66namespace boost { namespace spirit { namespace traits
67{
68 // declare special functions allowing to integrate any multi_pass iterator
69 // with expectation points
70
71 // multi_pass iterators require special handling (for the non-specialized
72 // versions of these functions see support/multi_pass_wrapper.hpp)
73 template <typename T, typename Policies>
74 void clear_queue(multi_pass<T, Policies>&
75 , BOOST_SCOPED_ENUM(clear_mode) mode = clear_mode::clear_if_enabled);
76
77 template <typename T, typename Policies>
78 void inhibit_clear_queue(multi_pass<T, Policies>&, bool);
79
80 template <typename T, typename Policies>
81 bool inhibit_clear_queue(multi_pass<T, Policies>&);
82
83 // Helper template to recognize a multi_pass iterator. This specialization
84 // will be instantiated for any multi_pass iterator.
85 template <typename T, typename Policies>
86 struct is_multi_pass<multi_pass<T, Policies> > : mpl::true_ {};
87
88}}}
89
90#endif
91