EVOLUTION-MANAGER
Edit File: istream_iterator.hpp
// 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