// (C) Copyright Gennadiy Rozental 2004-2008. // 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) // See http://www.boost.org/libs/test for the library home page. // // File : $RCSfile$ // // Version : $Revision: 49312 $ // // Description : // *************************************************************************** #ifndef BOOST_ISTREAM_LINE_ITERATOR_HPP_071894GER #define BOOST_ISTREAM_LINE_ITERATOR_HPP_071894GER // Boost #include #include // STL #include #include //____________________________________________________________________________// namespace boost { namespace unit_test { // ************************************************************************** // // ************** basic_istream_line_iterator ************** // // ************************************************************************** // // !! Should we support policy based delimitation template class basic_istream_line_iterator : public input_iterator_facade, std::basic_string, basic_cstring > { typedef input_iterator_facade, std::basic_string, basic_cstring > base; #ifdef BOOST_CLASSIC_IOSTREAMS typedef std::istream istream_type; #else typedef std::basic_istream istream_type; #endif public: // Constructors basic_istream_line_iterator() {} basic_istream_line_iterator( istream_type& input, CharT delimeter ) : m_input_stream( &input ), m_delimeter( delimeter ) { this->init(); } explicit basic_istream_line_iterator( istream_type& input ) : m_input_stream( &input ) , m_delimeter( input.widen( '\n' ) ) { this->init(); } private: friend class input_iterator_core_access; // increment implementation bool get() { return !!std::getline( *m_input_stream, this->m_value, m_delimeter ); } // Data members istream_type* m_input_stream; CharT m_delimeter; }; typedef basic_istream_line_iterator istream_line_iterator; typedef basic_istream_line_iterator wistream_line_iterator; } // namespace unit_test } // namespace boost //____________________________________________________________________________// #include #endif // BOOST_ISTREAM_LINE_ITERATOR_HPP_071894GER