104 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			104 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								#ifndef BOOST_ALGORITHM_RG071801_HPP
							 | 
						||
| 
								 | 
							
								#define BOOST_ALGORITHM_RG071801_HPP
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Copyright (c) 1994
							 | 
						||
| 
								 | 
							
								// Hewlett-Packard Company
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Permission to use, copy, modify, distribute and sell this software
							 | 
						||
| 
								 | 
							
								// and its documentation for any purpose is hereby granted without fee,
							 | 
						||
| 
								 | 
							
								// provided that the above copyright notice appear in all copies and
							 | 
						||
| 
								 | 
							
								// that both that copyright notice and this permission notice appear
							 | 
						||
| 
								 | 
							
								// in supporting documentation.  Hewlett-Packard Company makes no
							 | 
						||
| 
								 | 
							
								// representations about the suitability of this software for any
							 | 
						||
| 
								 | 
							
								// purpose.  It is provided "as is" without express or implied warranty.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Copyright (c) 1996-1998
							 | 
						||
| 
								 | 
							
								// Silicon Graphics Computer Systems, Inc.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								// Permission to use, copy, modify, distribute and sell this software
							 | 
						||
| 
								 | 
							
								// and its documentation for any purpose is hereby granted without fee,
							 | 
						||
| 
								 | 
							
								// provided that the above copyright notice appear in all copies and
							 | 
						||
| 
								 | 
							
								// that both that copyright notice and this permission notice appear
							 | 
						||
| 
								 | 
							
								// in supporting documentation.  Silicon Graphics makes no
							 | 
						||
| 
								 | 
							
								// representations about the suitability of this software for any
							 | 
						||
| 
								 | 
							
								// purpose.  It is provided "as is" without express or implied warranty.
							 | 
						||
| 
								 | 
							
								//
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Copyright 2002 The Trustees of Indiana University.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 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)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//  Boost.MultiArray Library
							 | 
						||
| 
								 | 
							
								//  Authors: Ronald Garcia
							 | 
						||
| 
								 | 
							
								//           Jeremy Siek
							 | 
						||
| 
								 | 
							
								//           Andrew Lumsdaine
							 | 
						||
| 
								 | 
							
								//  See http://www.boost.org/libs/multi_array for documentation.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "boost/iterator.hpp"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace boost {
							 | 
						||
| 
								 | 
							
								namespace detail {
							 | 
						||
| 
								 | 
							
								namespace multi_array {
							 | 
						||
| 
								 | 
							
								//--------------------------------------------------
							 | 
						||
| 
								 | 
							
								// copy_n (not part of the C++ standard)
							 | 
						||
| 
								 | 
							
								#if 1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								template <class InputIter, class Size, class OutputIter>
							 | 
						||
| 
								 | 
							
								OutputIter copy_n(InputIter first, Size count,
							 | 
						||
| 
								 | 
							
								                  OutputIter result) {
							 | 
						||
| 
								 | 
							
								  for ( ; count > 0; --count) {
							 | 
						||
| 
								 | 
							
								    *result = *first;
							 | 
						||
| 
								 | 
							
								    ++first;
							 | 
						||
| 
								 | 
							
								    ++result;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return result;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								#else // !1
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								template <class InputIter, class Size, class OutputIter>
							 | 
						||
| 
								 | 
							
								OutputIter copy_n__(InputIter first, Size count,
							 | 
						||
| 
								 | 
							
								                                       OutputIter result,
							 | 
						||
| 
								 | 
							
								                                       std::input_iterator_tag) {
							 | 
						||
| 
								 | 
							
								  for ( ; count > 0; --count) {
							 | 
						||
| 
								 | 
							
								    *result = *first;
							 | 
						||
| 
								 | 
							
								    ++first;
							 | 
						||
| 
								 | 
							
								    ++result;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return result;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								template <class RAIter, class Size, class OutputIter>
							 | 
						||
| 
								 | 
							
								inline OutputIter
							 | 
						||
| 
								 | 
							
								copy_n__(RAIter first, Size count,
							 | 
						||
| 
								 | 
							
								         OutputIter result,
							 | 
						||
| 
								 | 
							
								         std::random_access_iterator_tag) {
							 | 
						||
| 
								 | 
							
								  RAIter last = first + count;
							 | 
						||
| 
								 | 
							
								  return std::copy(first, last, result);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								template <class InputIter, class Size, class OutputIter>
							 | 
						||
| 
								 | 
							
								inline OutputIter
							 | 
						||
| 
								 | 
							
								copy_n__(InputIter first, Size count, OutputIter result) {
							 | 
						||
| 
								 | 
							
								  typedef typename std::iterator_traits<InputIter>::iterator_category cat;
							 | 
						||
| 
								 | 
							
								  return copy_n__(first, count, result, cat());
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								template <class InputIter, class Size, class OutputIter>
							 | 
						||
| 
								 | 
							
								inline OutputIter
							 | 
						||
| 
								 | 
							
								copy_n(InputIter first, Size count, OutputIter result) {
							 | 
						||
| 
								 | 
							
								  return copy_n__(first, count, result);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif // 1
							 | 
						||
| 
								 | 
							
								} // namespace multi_array
							 | 
						||
| 
								 | 
							
								} // namespace detail
							 | 
						||
| 
								 | 
							
								} // namespace boost
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif // BOOST_ALGORITHM_RG071801_HPP
							 |