PageRenderTime 19ms CodeModel.GetById 12ms app.highlight 4ms RepoModel.GetById 1ms app.codeStats 0ms

/Src/Dependencies/Boost/boost/spirit/home/support/iterators/multi_pass_fwd.hpp

http://hadesmem.googlecode.com/
C++ Header | 91 lines | 54 code | 18 blank | 19 comment | 0 complexity | 91b66e211c830e69aaca7ffe5e04e8a4 MD5 | raw file
 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