1 // (C) Copyright Gennadiy Rozental 2004-2008.
2 // Distributed under the Boost Software License, Version 1.0.
3 // (See accompanying file LICENSE_1_0.txt or copy at
4 // http://www.boost.org/LICENSE_1_0.txt)
6 // See http://www.boost.org/libs/test for the library home page.
10 // Version : $Revision$
13 // ***************************************************************************
15 #ifndef BOOST_ISTREAM_LINE_ITERATOR_HPP_071894GER
16 #define BOOST_ISTREAM_LINE_ITERATOR_HPP_071894GER
19 #include <boost/test/utils/basic_cstring/basic_cstring.hpp>
20 #include <boost/test/utils/iterator/input_iterator_facade.hpp>
25 #include <boost/test/detail/suppress_warnings.hpp>
27 //____________________________________________________________________________//
33 // ************************************************************************** //
34 // ************** basic_istream_line_iterator ************** //
35 // ************************************************************************** //
37 // !! Should we support policy based delimitation
39 template<typename CharT>
40 class basic_istream_line_iterator
41 : public input_iterator_facade<basic_istream_line_iterator<CharT>,
42 std::basic_string<CharT>,
43 basic_cstring<CharT const> > {
44 typedef input_iterator_facade<basic_istream_line_iterator<CharT>,
45 std::basic_string<CharT>,
46 basic_cstring<CharT const> > base;
47 #ifdef BOOST_CLASSIC_IOSTREAMS
48 typedef std::istream istream_type;
50 typedef std::basic_istream<CharT> istream_type;
54 basic_istream_line_iterator() {}
55 basic_istream_line_iterator( istream_type& input, CharT delimeter )
56 : m_input_stream( &input ), m_delimeter( delimeter )
60 explicit basic_istream_line_iterator( istream_type& input )
61 : m_input_stream( &input )
62 , m_delimeter( input.widen( '\n' ) )
68 friend class input_iterator_core_access;
70 // increment implementation
73 return !!std::getline( *m_input_stream, this->m_value, m_delimeter );
77 istream_type* m_input_stream;
81 typedef basic_istream_line_iterator<char> istream_line_iterator;
82 typedef basic_istream_line_iterator<wchar_t> wistream_line_iterator;
84 } // namespace unit_test
88 //____________________________________________________________________________//
90 #include <boost/test/detail/enable_warnings.hpp>
92 #endif // BOOST_ISTREAM_LINE_ITERATOR_HPP_071894GER