94 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			94 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								// Boost.Range library
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								//  Copyright Neil Groves 2009.
							 | 
						||
| 
								 | 
							
								//  Use, modification and distribution is subject to 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)
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// For more information, see http://www.boost.org/libs/range/
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								#ifndef BOOST_RANGE_ITERATOR_RANGE_IO_HPP_INCLUDED
							 | 
						||
| 
								 | 
							
								#define BOOST_RANGE_ITERATOR_RANGE_IO_HPP_INCLUDED
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <boost/config.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/detail/workaround.hpp>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
							 | 
						||
| 
								 | 
							
								    #pragma warning( push )
							 | 
						||
| 
								 | 
							
								    #pragma warning( disable : 4996 )
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// From boost/dynamic_bitset.hpp; thanks to Matthias Troyer for Cray X1 patch.
							 | 
						||
| 
								 | 
							
								#ifndef BOOST_OLD_IOSTREAMS 
							 | 
						||
| 
								 | 
							
								# if defined(__STL_CONFIG_H) && \
							 | 
						||
| 
								 | 
							
								    !defined (__STL_USE_NEW_IOSTREAMS) && !defined(__crayx1) \
							 | 
						||
| 
								 | 
							
								    /**/
							 | 
						||
| 
								 | 
							
								#  define BOOST_OLD_IOSTREAMS
							 | 
						||
| 
								 | 
							
								# endif
							 | 
						||
| 
								 | 
							
								#endif // #ifndef BOOST_OLD_IOSTREAMS
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef _STLP_NO_IOSTREAMS
							 | 
						||
| 
								 | 
							
								# ifndef BOOST_OLD_IOSTREAMS
							 | 
						||
| 
								 | 
							
								#  include <ostream>
							 | 
						||
| 
								 | 
							
								# else
							 | 
						||
| 
								 | 
							
								#  include <ostream.h>
							 | 
						||
| 
								 | 
							
								# endif
							 | 
						||
| 
								 | 
							
								#endif // _STLP_NO_IOSTREAMS
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <boost/range/iterator_range_core.hpp>
							 | 
						||
| 
								 | 
							
								#include <iterator>
							 | 
						||
| 
								 | 
							
								#include <algorithm>
							 | 
						||
| 
								 | 
							
								#include <cstddef>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace boost
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifndef _STLP_NO_IOSTREAMS
							 | 
						||
| 
								 | 
							
								# ifndef BOOST_OLD_IOSTREAMS   
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //! iterator_range output operator
							 | 
						||
| 
								 | 
							
								        /*!
							 | 
						||
| 
								 | 
							
								            Output the range to an ostream. Elements are outputted
							 | 
						||
| 
								 | 
							
								            in a sequence without separators.
							 | 
						||
| 
								 | 
							
								        */
							 | 
						||
| 
								 | 
							
								        template< typename IteratorT, typename Elem, typename Traits >
							 | 
						||
| 
								 | 
							
								        inline std::basic_ostream<Elem,Traits>& operator<<( 
							 | 
						||
| 
								 | 
							
								                    std::basic_ostream<Elem, Traits>& Os,
							 | 
						||
| 
								 | 
							
								                    const iterator_range<IteratorT>& r )
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            std::copy( r.begin(), r.end(), 
							 | 
						||
| 
								 | 
							
								                       std::ostream_iterator< BOOST_DEDUCED_TYPENAME 
							 | 
						||
| 
								 | 
							
								                                              iterator_value<IteratorT>::type, 
							 | 
						||
| 
								 | 
							
								                                              Elem, Traits>(Os) );
							 | 
						||
| 
								 | 
							
								            return Os;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# else
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //! iterator_range output operator
							 | 
						||
| 
								 | 
							
								        /*!
							 | 
						||
| 
								 | 
							
								            Output the range to an ostream. Elements are outputted
							 | 
						||
| 
								 | 
							
								            in a sequence without separators.
							 | 
						||
| 
								 | 
							
								        */
							 | 
						||
| 
								 | 
							
								        template< typename IteratorT >
							 | 
						||
| 
								 | 
							
								        inline std::ostream& operator<<( 
							 | 
						||
| 
								 | 
							
								                    std::ostream& Os,
							 | 
						||
| 
								 | 
							
								                    const iterator_range<IteratorT>& r )
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            std::copy( r.begin(), r.end(), std::ostream_iterator<char>(Os));
							 | 
						||
| 
								 | 
							
								            return Os;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# endif
							 | 
						||
| 
								 | 
							
								#endif // _STLP_NO_IOSTREAMS
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								} // namespace boost
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#undef BOOST_OLD_IOSTREAMS
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1500))
							 | 
						||
| 
								 | 
							
								    #pragma warning(pop)
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif // include guard
							 |