/Src/Dependencies/Boost/boost/spirit/home/support/iterators/istream_iterator.hpp
http://hadesmem.googlecode.com/ · C++ Header · 80 lines · 62 code · 12 blank · 6 comment · 1 complexity · e4e508f20875bddb3237512bdd2344c3 MD5 · raw file
- // Copyright (c) 2001-2011 Hartmut Kaiser
- //
- // 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_ISTREAM_ITERATOR_JAN_03_2010_0522PM)
- #define BOOST_SPIRIT_ISTREAM_ITERATOR_JAN_03_2010_0522PM
- #include <boost/spirit/home/support/iterators/detail/ref_counted_policy.hpp>
- #if defined(BOOST_SPIRIT_DEBUG)
- #include <boost/spirit/home/support/iterators/detail/buf_id_check_policy.hpp>
- #else
- #include <boost/spirit/home/support/iterators/detail/no_check_policy.hpp>
- #endif
- #include <boost/spirit/home/support/iterators/detail/istream_policy.hpp>
- #include <boost/spirit/home/support/iterators/detail/split_std_deque_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
- {
- ///////////////////////////////////////////////////////////////////////////
- template <typename Elem, typename Traits = std::char_traits<Elem> >
- class basic_istream_iterator :
- public multi_pass<
- std::basic_istream<Elem, Traits>
- , iterator_policies::default_policy<
- iterator_policies::ref_counted
- #if defined(BOOST_SPIRIT_DEBUG)
- , iterator_policies::buf_id_check
- #else
- , iterator_policies::no_check
- #endif
- , iterator_policies::istream
- , iterator_policies::split_std_deque>
- >
- {
- private:
- typedef multi_pass<
- std::basic_istream<Elem, Traits>
- , iterator_policies::default_policy<
- iterator_policies::ref_counted
- #if defined(BOOST_SPIRIT_DEBUG)
- , iterator_policies::buf_id_check
- #else
- , iterator_policies::no_check
- #endif
- , iterator_policies::istream
- , iterator_policies::split_std_deque>
- > base_type;
- public:
- basic_istream_iterator()
- : base_type() {}
- explicit basic_istream_iterator(std::basic_istream<Elem, Traits>& x)
- : base_type(x) {}
- basic_istream_iterator(basic_istream_iterator const& x)
- : base_type(x) {}
- #if BOOST_WORKAROUND(__GLIBCPP__, == 20020514)
- basic_istream_iterator(int) // workaround for a bug in the library
- : base_type() {} // shipped with gcc 3.1
- #endif // BOOST_WORKAROUND(__GLIBCPP__, == 20020514)
- basic_istream_iterator operator= (base_type const& rhs)
- {
- this->base_type::operator=(rhs);
- return *this;
- }
- // default generated operators, destructor and assignment operator are ok.
- };
- typedef basic_istream_iterator<char> istream_iterator;
- }}
- #endif