epoc32/include/stdapis/boost/multi_array/algorithm.hpp
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
permissions -rw-r--r--
Final list of Symbian^2 public API header files
     1 #ifndef BOOST_ALGORITHM_RG071801_HPP
     2 #define BOOST_ALGORITHM_RG071801_HPP
     3 
     4 //
     5 //
     6 // Copyright (c) 1994
     7 // Hewlett-Packard Company
     8 //
     9 // Permission to use, copy, modify, distribute and sell this software
    10 // and its documentation for any purpose is hereby granted without fee,
    11 // provided that the above copyright notice appear in all copies and
    12 // that both that copyright notice and this permission notice appear
    13 // in supporting documentation.  Hewlett-Packard Company makes no
    14 // representations about the suitability of this software for any
    15 // purpose.  It is provided "as is" without express or implied warranty.
    16 //
    17 //
    18 // Copyright (c) 1996-1998
    19 // Silicon Graphics Computer Systems, Inc.
    20 //
    21 // Permission to use, copy, modify, distribute and sell this software
    22 // and its documentation for any purpose is hereby granted without fee,
    23 // provided that the above copyright notice appear in all copies and
    24 // that both that copyright notice and this permission notice appear
    25 // in supporting documentation.  Silicon Graphics makes no
    26 // representations about the suitability of this software for any
    27 // purpose.  It is provided "as is" without express or implied warranty.
    28 //
    29 
    30 // Copyright 2002 The Trustees of Indiana University.
    31 
    32 // Use, modification and distribution is subject to the Boost Software 
    33 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
    34 // http://www.boost.org/LICENSE_1_0.txt)
    35 
    36 //  Boost.MultiArray Library
    37 //  Authors: Ronald Garcia
    38 //           Jeremy Siek
    39 //           Andrew Lumsdaine
    40 //  See http://www.boost.org/libs/multi_array for documentation.
    41 
    42 
    43 #include "boost/iterator.hpp"
    44 
    45 namespace boost {
    46 namespace detail {
    47 namespace multi_array {
    48 //--------------------------------------------------
    49 // copy_n (not part of the C++ standard)
    50 #if 1
    51 
    52 template <class InputIter, class Size, class OutputIter>
    53 OutputIter copy_n(InputIter first, Size count,
    54                   OutputIter result) {
    55   for ( ; count > 0; --count) {
    56     *result = *first;
    57     ++first;
    58     ++result;
    59   }
    60   return result;
    61 }
    62 #else // !1
    63 
    64 template <class InputIter, class Size, class OutputIter>
    65 OutputIter copy_n__(InputIter first, Size count,
    66                                        OutputIter result,
    67                                        std::input_iterator_tag) {
    68   for ( ; count > 0; --count) {
    69     *result = *first;
    70     ++first;
    71     ++result;
    72   }
    73   return result;
    74 }
    75 
    76 template <class RAIter, class Size, class OutputIter>
    77 inline OutputIter
    78 copy_n__(RAIter first, Size count,
    79          OutputIter result,
    80          std::random_access_iterator_tag) {
    81   RAIter last = first + count;
    82   return std::copy(first, last, result);
    83 }
    84 
    85 template <class InputIter, class Size, class OutputIter>
    86 inline OutputIter
    87 copy_n__(InputIter first, Size count, OutputIter result) {
    88   typedef typename std::iterator_traits<InputIter>::iterator_category cat;
    89   return copy_n__(first, count, result, cat());
    90 }
    91 
    92 template <class InputIter, class Size, class OutputIter>
    93 inline OutputIter
    94 copy_n(InputIter first, Size count, OutputIter result) {
    95   return copy_n__(first, count, result);
    96 }
    97 
    98 #endif // 1
    99 } // namespace multi_array
   100 } // namespace detail
   101 } // namespace boost
   102 
   103 #endif // BOOST_ALGORITHM_RG071801_HPP