// (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_IFSTREAM_LINE_ITERATOR_HPP_071894GER #define BOOST_IFSTREAM_LINE_ITERATOR_HPP_071894GER // Boost #include // STL #include #include //____________________________________________________________________________// namespace boost { namespace unit_test { namespace ut_detail { // ************************************************************************** // // ************** ifstream_holder ************** // // ************************************************************************** // template class ifstream_holder { public: // Constructor explicit ifstream_holder( basic_cstring file_name ) { if( file_name.is_empty() ) return; m_stream.open( file_name.begin(), std::ios::in ); } bool is_valid() { return m_stream.is_open(); } protected: #ifdef BOOST_CLASSIC_IOSTREAMS typedef std::ifstream stream_t; #else typedef std::basic_ifstream > stream_t; #endif // Data members stream_t m_stream; }; } // namespace ut_detail // ************************************************************************** // // ************** basic_ifstream_line_iterator ************** // // ************************************************************************** // #ifdef BOOST_MSVC # pragma warning(push) # pragma warning(disable: 4355) // 'this' : used in base member initializer list #endif template class basic_ifstream_line_iterator : ut_detail::ifstream_holder, public basic_istream_line_iterator { public: basic_ifstream_line_iterator( basic_cstring file_name, CharT delimeter ) : ut_detail::ifstream_holder( file_name ), basic_istream_line_iterator( this->m_stream, delimeter ) {} explicit basic_ifstream_line_iterator( basic_cstring file_name = basic_cstring() ) : ut_detail::ifstream_holder( file_name ), basic_istream_line_iterator( this->m_stream ) {} }; #ifdef BOOST_MSVC # pragma warning(default: 4355) #endif typedef basic_ifstream_line_iterator ifstream_line_iterator; typedef basic_ifstream_line_iterator wifstream_line_iterator; } // namespace unit_test } // namespace boost //____________________________________________________________________________// #include #endif // BOOST_IFSTREAM_LINE_ITERATOR_HPP_071894GER