diff options
author | Gabriel Dos Reis <gdr@codesourcery.com> | 2000-10-31 14:40:27 +0000 |
---|---|---|
committer | Gabriel Dos Reis <gdr@gcc.gnu.org> | 2000-10-31 14:40:27 +0000 |
commit | 89b781699385e3f537dde0360472805f42cef916 (patch) | |
tree | 0c23fd146887f91e46bfeab8a5bb5976aaa0f51c | |
parent | 8bb1662097a899b0df91250e78091ce74d5d27e0 (diff) | |
download | gcc-89b781699385e3f537dde0360472805f42cef916.zip gcc-89b781699385e3f537dde0360472805f42cef916.tar.gz gcc-89b781699385e3f537dde0360472805f42cef916.tar.bz2 |
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
-rw-r--r-- | libstdc++-v3/ChangeLog | 13 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/std_complex.h | 23 | ||||
-rw-r--r-- | libstdc++-v3/include/c/bits/std_cwctype.h | 16 | ||||
-rw-r--r-- | libstdc++-v3/src/complex.cc | 16 |
4 files changed, 53 insertions, 15 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index fde5cdb..4162041 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -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 diff --git a/libstdc++-v3/include/bits/std_complex.h b/libstdc++-v3/include/bits/std_complex.h index 63f7351..056b120 100644 --- a/libstdc++-v3/include/bits/std_complex.h +++ b/libstdc++-v3/include/bits/std_complex.h @@ -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 */ - - - - diff --git a/libstdc++-v3/include/c/bits/std_cwctype.h b/libstdc++-v3/include/c/bits/std_cwctype.h index 5757c14..9a6a891 100644 --- a/libstdc++-v3/include/c/bits/std_cwctype.h +++ b/libstdc++-v3/include/c/bits/std_cwctype.h @@ -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); diff --git a/libstdc++-v3/src/complex.cc b/libstdc++-v3/src/complex.cc index 6af7ce0..2f7cfc4 100644 --- a/libstdc++-v3/src/complex.cc +++ b/libstdc++-v3/src/complex.cc @@ -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 |