aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Dos Reis <gdr@codesourcery.com>2000-10-31 14:40:27 +0000
committerGabriel Dos Reis <gdr@gcc.gnu.org>2000-10-31 14:40:27 +0000
commit89b781699385e3f537dde0360472805f42cef916 (patch)
tree0c23fd146887f91e46bfeab8a5bb5976aaa0f51c
parent8bb1662097a899b0df91250e78091ce74d5d27e0 (diff)
downloadgcc-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/ChangeLog13
-rw-r--r--libstdc++-v3/include/bits/std_complex.h23
-rw-r--r--libstdc++-v3/include/c/bits/std_cwctype.h16
-rw-r--r--libstdc++-v3/src/complex.cc16
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