You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
103 lines
3.1 KiB
103 lines
3.1 KiB
#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
|
|
|