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