123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- // Copyright (c) 2001, Daniel C. Nuffer
- // Copyright (c) 2001-2011 Hartmut Kaiser
- // http://spirit.sourceforge.net/
- //
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- #if !defined(BOOST_SPIRIT_ITERATOR_LOOK_AHEAD_MAR_16_2007_1253PM)
- #define BOOST_SPIRIT_ITERATOR_LOOK_AHEAD_MAR_16_2007_1253PM
- #include <boost/spirit/home/support/iterators/detail/first_owner_policy.hpp>
- #include <boost/spirit/home/support/iterators/detail/no_check_policy.hpp>
- #include <boost/spirit/home/support/iterators/detail/input_iterator_policy.hpp>
- #include <boost/spirit/home/support/iterators/detail/fixed_size_queue_policy.hpp>
- #include <boost/spirit/home/support/iterators/detail/combine_policies.hpp>
- #include <boost/spirit/home/support/iterators/multi_pass.hpp>
- namespace boost { namespace spirit
- {
- ///////////////////////////////////////////////////////////////////////////
- // this could be a template typedef, since such a thing doesn't
- // exist in C++, we'll use inheritance to accomplish the same thing.
- ///////////////////////////////////////////////////////////////////////////
- template <typename T, std::size_t N>
- class look_ahead :
- public multi_pass<T
- , iterator_policies::default_policy<
- iterator_policies::first_owner
- , iterator_policies::no_check
- , iterator_policies::input_iterator
- , iterator_policies::fixed_size_queue<N> >
- >
- {
- private:
- typedef multi_pass<T
- , iterator_policies::default_policy<
- iterator_policies::first_owner
- , iterator_policies::no_check
- , iterator_policies::input_iterator
- , iterator_policies::fixed_size_queue<N> >
- > base_type;
- public:
- look_ahead()
- : base_type() {}
- explicit look_ahead(T x)
- : base_type(x) {}
- look_ahead(look_ahead const& x)
- : base_type(x) {}
- #if BOOST_WORKAROUND(__GLIBCPP__, == 20020514)
- look_ahead(int) // workaround for a bug in the library
- : base_type() {} // shipped with gcc 3.1
- #endif // BOOST_WORKAROUND(__GLIBCPP__, == 20020514)
- look_ahead operator= (base_type const& rhs)
- {
- this->base_type::operator=(rhs);
- return *this;
- }
- // default generated operators destructor and assignment operator are ok.
- };
- }}
- #endif
|