std_valarray.h (valarray<>::shift): Avoid comparaison between signed and unsigned integer types.

* include/bits/std_valarray.h(valarray<>::shift): Avoid
        comparaison between signed and unsigned integer types.
        (valarray<>::cshift): Reformat.

From-SVN: r39590
This commit is contained in:
Gabriel Dos Reis 2001-02-11 22:16:48 +00:00 committed by Gabriel Dos Reis
parent e065341b56
commit d2155bfea5
2 changed files with 51 additions and 40 deletions

View File

@ -1,3 +1,9 @@
2001-02-11 Gabriel Dos Reis <gdr@codesourcery.com>
* include/bits/std_valarray.h(valarray<>::shift): Avoid
comparaison between signed and unsigned integer types.
(valarray<>::cshift): Reformat.
2001-02-11 Alexandre Oliva <aoliva@redhat.com> 2001-02-11 Alexandre Oliva <aoliva@redhat.com>
* src/gen-num-limits.cc: Use sigsetjmp and siglongjmp if available. * src/gen-num-limits.cc: Use sigsetjmp and siglongjmp if available.

View File

@ -472,48 +472,53 @@ namespace std {
// } // }
template <class _Tp> template <class _Tp>
inline valarray<_Tp> inline valarray<_Tp>
valarray<_Tp>::shift (int __n) const valarray<_Tp>::shift(int __n) const
{ {
_Tp* const __a = static_cast<_Tp*> _Tp* const __a = static_cast<_Tp*>
(__builtin_alloca (sizeof(_Tp) * _M_size)); (__builtin_alloca(sizeof(_Tp) * _M_size));
if (! __n) // __n == 0: no shift if (__n == 0) // no shift
__valarray_copy_construct(_M_data, _M_data + _M_size, __a); __valarray_copy_construct(_M_data, _M_data + _M_size, __a);
else if (__n > 0) { // __n > 0: shift left else if (__n > 0) // __n > 0: shift left
if (__n > _M_size) {
__valarray_default_construct(__a, __a + __n); if (size_t(__n) > _M_size)
else { __valarray_default_construct(__a, __a + __n);
__valarray_copy_construct(_M_data+__n, _M_data + _M_size, __a); else
__valarray_default_construct(__a+_M_size-__n, __a + _M_size); {
} __valarray_copy_construct(_M_data+__n, _M_data + _M_size, __a);
} __valarray_default_construct(__a+_M_size-__n, __a + _M_size);
else { // __n < 0: shift right }
__valarray_copy_construct (_M_data, _M_data+_M_size+__n, __a-__n); }
__valarray_default_construct(__a, __a - __n); else // __n < 0: shift right
} {
return valarray<_Tp> (__a, _M_size); __valarray_copy_construct (_M_data, _M_data+_M_size+__n, __a-__n);
} __valarray_default_construct(__a, __a - __n);
}
return valarray<_Tp> (__a, _M_size);
}
template <class _Tp> template <class _Tp>
inline valarray<_Tp> inline valarray<_Tp>
valarray<_Tp>::cshift (int __n) const valarray<_Tp>::cshift (int __n) const
{ {
_Tp* const __a = static_cast<_Tp*> _Tp* const __a = static_cast<_Tp*>
(__builtin_alloca (sizeof(_Tp) * _M_size)); (__builtin_alloca (sizeof(_Tp) * _M_size));
if (! __n) // __n == 0: no cshift if (__n == 0) // no cshift
__valarray_copy_construct(_M_data, _M_data + _M_size, __a); __valarray_copy_construct(_M_data, _M_data + _M_size, __a);
else if (__n > 0) { // __n > 0: cshift left else if (__n > 0) // cshift left
__valarray_copy_construct(_M_data, _M_data+__n, __a+_M_size-__n); {
__valarray_copy_construct(_M_data+__n, _M_data + _M_size, __a); __valarray_copy_construct(_M_data, _M_data+__n, __a+_M_size-__n);
} __valarray_copy_construct(_M_data+__n, _M_data + _M_size, __a);
else { // __n < 0: cshift right }
__valarray_copy_construct else // cshift right
(_M_data + _M_size+__n, _M_data + _M_size, __a); {
__valarray_copy_construct __valarray_copy_construct
(_M_data, _M_data + _M_size+__n, __a - __n); (_M_data + _M_size+__n, _M_data + _M_size, __a);
} __valarray_copy_construct
return valarray<_Tp> (__a, _M_size); (_M_data, _M_data + _M_size+__n, __a - __n);
} }
return valarray<_Tp>(__a, _M_size);
}
template <class _Tp> template <class _Tp>
inline void inline void