32 #ifndef _VALARRAY_ARRAY_TCC 
   33 #define _VALARRAY_ARRAY_TCC 1 
   35 namespace std _GLIBCXX_VISIBILITY(default)
 
   37 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   39   template<
typename _Tp>
 
   41     __valarray_fill(_Array<_Tp> __a, 
size_t __n, _Array<bool> __m,
 
   44       _Tp* __p = __a._M_data;
 
   45       bool* __ok (__m._M_data);
 
   46       for (
size_t __i=0; __i < __n; ++__i, ++__ok, ++__p)
 
   63   template<
typename _Tp>
 
   65     __valarray_copy(_Array<_Tp> __a, _Array<bool> __m, _Array<_Tp> __b,
 
   68       _Tp* __p (__a._M_data);
 
   69       bool* __ok (__m._M_data);
 
   70       for (_Tp* __q = __b._M_data; __q < __b._M_data + __n;
 
   88   template<
typename _Tp>
 
   90     __valarray_copy(_Array<_Tp> __a, 
size_t __n, _Array<_Tp> __b,
 
   93       _Tp* __q (__b._M_data);
 
   94       bool* __ok (__m._M_data);
 
   95       for (_Tp* __p = __a._M_data; __p < __a._M_data+__n;
 
  112   template<
typename _Tp>
 
  114     __valarray_copy(_Array<_Tp> __a, _Array<bool> __m, 
size_t __n,
 
  115             _Array<_Tp> __b, _Array<bool> __k)
 
  117       _Tp* __p (__a._M_data);
 
  118       _Tp* __q (__b._M_data);
 
  119       bool* __srcok (__m._M_data);
 
  120       bool* __dstok (__k._M_data);
 
  121       for (
size_t __i = 0; __i < __n;
 
  122        ++__srcok, ++__p, ++__dstok, ++__q, ++__i)
 
  140   template<
typename _Tp, 
class _Dom>
 
  142     __valarray_copy(
const _Expr<_Dom, _Tp>& __e, 
size_t __n, _Array<_Tp> __a)
 
  144       _Tp* __p (__a._M_data);
 
  145       for (
size_t __i = 0; __i < __n; ++__i, ++__p)
 
  151   template<
typename _Tp, 
class _Dom>
 
  153     __valarray_copy(
const _Expr<_Dom, _Tp>& __e, 
size_t __n,
 
  154              _Array<_Tp> __a, 
size_t __s)
 
  156       _Tp* __p (__a._M_data);
 
  157       for (
size_t __i = 0; __i < __n; ++__i, __p += __s)
 
  163   template<
typename _Tp, 
class _Dom>
 
  165     __valarray_copy(
const _Expr<_Dom, _Tp>& __e, 
size_t __n,
 
  166             _Array<_Tp> __a, _Array<size_t> __i)
 
  168       size_t* __j (__i._M_data);
 
  169       for (
size_t __k = 0; __k < __n; ++__k, ++__j)
 
  170     __a._M_data[*__j] = __e[__k];
 
  175   template<
typename _Tp>
 
  177     __valarray_copy(_Array<_Tp> __e, _Array<size_t> __f,
 
  179             _Array<_Tp> __a, _Array<size_t> __i)
 
  181       size_t* __g (__f._M_data);
 
  182       size_t* __j (__i._M_data);
 
  183       for (
size_t __k = 0; __k < __n; ++__k, ++__j, ++__g) 
 
  184     __a._M_data[*__j] = __e._M_data[*__g];
 
  193   template<
typename _Tp, 
class _Dom>
 
  195     __valarray_copy(
const _Expr<_Dom, _Tp>& __e, 
size_t __n,
 
  196             _Array<_Tp> __a, _Array<bool> __m)
 
  198       bool* __ok (__m._M_data);
 
  199       _Tp* __p (__a._M_data);
 
  200       for (
size_t __i = 0; __i < __n; ++__i, ++__ok, ++__p)
 
  212   template<
typename _Tp, 
class _Dom>
 
  214     __valarray_copy_construct(
const _Expr<_Dom, _Tp>& __e, 
size_t __n,
 
  217       _Tp* __p (__a._M_data);
 
  218       for (
size_t __i = 0; __i < __n; ++__i, ++__p)
 
  219     new (__p) _Tp(__e[__i]);
 
  223   template<
typename _Tp>
 
  225     __valarray_copy_construct(_Array<_Tp> __a, _Array<bool> __m,
 
  226                   _Array<_Tp> __b, 
size_t __n)
 
  228       _Tp* __p (__a._M_data);
 
  229       bool* __ok (__m._M_data);
 
  230       for (_Tp* __q = __b._M_data; __q < __b._M_data+__n; ++__q, ++__ok, ++__p)
 
  241 _GLIBCXX_END_NAMESPACE_VERSION