mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-03 17:40:19 +08:00
std_cwctype.h: #undef possible function-like macro definitions of iswxxx functions...
* include/c/bits/std_cwctype.h: #undef possible function-like macro definitions of iswxxx functions, which might be brought in by <wctype.h>. Those macro definitions prevent build on some linux-based systems. * include/bits/std_complex.h (complex<>): Comment out friend declarations of abs<> specializations. (abs): Define primary template. * src/complex.cc (abs): Comment out specialization definition. From-SVN: r37157
This commit is contained in:
parent
8bb1662097
commit
89b7816993
@ -1,3 +1,16 @@
|
||||
2000-10-31 Gabriel Dos Reis <gdr@codesourcery.com>
|
||||
|
||||
* include/c/bits/std_cwctype.h: #undef possible function-like
|
||||
macro definitions of iswxxx functions, which might be brought in
|
||||
by <wctype.h>. Those macro definitions prevent build on some
|
||||
linux-based systems.
|
||||
|
||||
* include/bits/std_complex.h (complex<>): Comment out friend
|
||||
declarations of abs<> specializations.
|
||||
(abs): Define primary template.
|
||||
|
||||
* src/complex.cc (abs): Comment out specialization definition.
|
||||
|
||||
2000-10-30 Phil Edwards <pme@sources.redhat.com>
|
||||
|
||||
* acinclude.m4 (GLIBCPP_ENABLE_DEBUG): Raise debugging level from
|
||||
|
@ -176,7 +176,7 @@ namespace std
|
||||
friend class complex<double>;
|
||||
friend class complex<long double>;
|
||||
|
||||
friend float abs<>(const complex<float>&);
|
||||
// friend float abs<>(const complex<float>&);
|
||||
friend float arg<>(const complex<float>&);
|
||||
|
||||
friend complex<float> conj<>(const complex<float>&);
|
||||
@ -253,7 +253,7 @@ namespace std
|
||||
friend class complex<float>;
|
||||
friend class complex<long double>;
|
||||
|
||||
friend double abs<>(const complex<double>&);
|
||||
// friend double abs<>(const complex<double>&);
|
||||
friend double arg<>(const complex<double>&);
|
||||
|
||||
friend complex<double> conj<>(const complex<double>&);
|
||||
@ -330,7 +330,7 @@ namespace std
|
||||
friend class complex<float>;
|
||||
friend class complex<double>;
|
||||
|
||||
friend long double abs<>(const complex<long double>&);
|
||||
// friend long double abs<>(const complex<long double>&);
|
||||
friend long double arg<>(const complex<long double>&);
|
||||
|
||||
friend complex<long double> conj<>(const complex<long double>&);
|
||||
@ -927,6 +927,19 @@ namespace std
|
||||
inline _Tp
|
||||
imag(const complex<_Tp>& __z)
|
||||
{ return __z.imag(); }
|
||||
|
||||
template<typename _Tp>
|
||||
inline _Tp
|
||||
abs(const complex<_Tp>& __z)
|
||||
{
|
||||
_Tp __x = __z.real();
|
||||
_Tp __y = __z.imag();
|
||||
_Tp __s = abs(__x) + abs(__y);
|
||||
if (__s == _Tp()) // well ...
|
||||
return __s;
|
||||
__x /= __s; __y /= __s;
|
||||
return __s * sqrt(__x * __x + __y * __y);
|
||||
}
|
||||
|
||||
|
||||
// We use here a few more specializations.
|
||||
@ -955,7 +968,3 @@ namespace std
|
||||
} // namespace std
|
||||
|
||||
#endif /* _CPP_COMPLEX */
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -44,6 +44,22 @@ namespace std
|
||||
using ::wctype_t;
|
||||
using ::wctrans_t;
|
||||
|
||||
// Get rid of those macros defined in <wctype.h> in lieu of real functions.
|
||||
#undef iswalnum
|
||||
#undef iswalpha
|
||||
#undef iswblank
|
||||
#undef iswcntrl
|
||||
#undef iswdigit
|
||||
#undef iswgraph
|
||||
#undef iswlower
|
||||
#undef iswprint
|
||||
#undef iswprint
|
||||
#undef iswpunct
|
||||
#undef iswspace
|
||||
#undef iswupper
|
||||
#undef iswxdigit
|
||||
#undef iswctype
|
||||
|
||||
extern "C" int iswalnum(wint_t);
|
||||
extern "C" int iswalpha(wint_t);
|
||||
extern "C" int iswblank(wint_t);
|
||||
|
@ -45,14 +45,14 @@
|
||||
|
||||
namespace std
|
||||
{
|
||||
template<>
|
||||
FLT
|
||||
abs(const complex<FLT>& __x)
|
||||
{
|
||||
// We don't use cabs here because some systems (IRIX 6.5, for
|
||||
// example) define their own incompatible version.
|
||||
return hypot (__real__ __x._M_value, __imag__ __x._M_value);
|
||||
}
|
||||
// template<>
|
||||
// FLT
|
||||
// abs(const complex<FLT>& __x)
|
||||
// {
|
||||
// // We don't use cabs here because some systems (IRIX 6.5, for
|
||||
// // example) define their own incompatible version.
|
||||
// return hypot (__real__ __x._M_value, __imag__ __x._M_value);
|
||||
// }
|
||||
|
||||
template<>
|
||||
FLT
|
||||
|
Loading…
Reference in New Issue
Block a user