You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stdcxx.apache.org by se...@apache.org on 2007/10/16 02:16:06 UTC

svn commit: r584981 - in /incubator/stdcxx/branches/4.2.0: include/limits src/limits_bits.cpp src/num_get.cpp

Author: sebor
Date: Mon Oct 15 17:16:04 2007
New Revision: 584981

URL: http://svn.apache.org/viewvc?rev=584981&view=rev
Log:
2007-10-15  Martin Sebor  <se...@roguewave.com>

	STDCXX-509
	* limits [_RWSTD_NO_OBJECT_MANGLING] (__rw_flt_denorm_min,
	__rw_flt_infinity, __rw_flt_qNaN, __rw_flt_sNaN, __rw_dbl_denorm_min,
	__rw_dbl_infinity, __rw_dbl_qNaN, __rw_dbl_sNaN, __rw_ldbl_denorm_min,
	__rw_ldbl_infinity, __rw_ldbl_qNaN, __rw_ldbl_sNaN): Declared with C++
	linkage when the config macro is #defined for binary compatibility with
	prior 4.x releases.
	* limits_bits.cpp: Same as above for definitions of constants.
	* num_get.cpp  [_RWSTD_NO_OBJECT_MANGLING] (__rw_flt_infinity,
	__rw_dbl_infinity, __rw_ldbl_infinity): Same.

Modified:
    incubator/stdcxx/branches/4.2.0/include/limits
    incubator/stdcxx/branches/4.2.0/src/limits_bits.cpp
    incubator/stdcxx/branches/4.2.0/src/num_get.cpp

Modified: incubator/stdcxx/branches/4.2.0/include/limits
URL: http://svn.apache.org/viewvc/incubator/stdcxx/branches/4.2.0/include/limits?rev=584981&r1=584980&r2=584981&view=diff
==============================================================================
--- incubator/stdcxx/branches/4.2.0/include/limits (original)
+++ incubator/stdcxx/branches/4.2.0/include/limits Mon Oct 15 17:16:04 2007
@@ -88,8 +88,17 @@
 
 _RWSTD_NAMESPACE (__rw) {
 
+#ifndef _RWSTD_NO_OBJECT_MANGLING
+
 extern "C" {
 
+#else   // if defined (_RWSTD_NO_OBJECT_MANGLING)
+
+extern "C++" {
+
+#endif   // _RWSTD_NO_OBJECT_MANGLING
+
+
 _RWSTD_EXPORT extern const float       __rw_flt_infinity;
 _RWSTD_EXPORT extern const double      __rw_dbl_infinity;
 
@@ -111,7 +120,8 @@
 
 #endif   // _RWSTD_NO_LONG_DOUBLE
 
-}   // extern "C"
+
+}   // extern "C"/"C++"
 
 }   // namespace __rw
 

Modified: incubator/stdcxx/branches/4.2.0/src/limits_bits.cpp
URL: http://svn.apache.org/viewvc/incubator/stdcxx/branches/4.2.0/src/limits_bits.cpp?rev=584981&r1=584980&r2=584981&view=diff
==============================================================================
--- incubator/stdcxx/branches/4.2.0/src/limits_bits.cpp (original)
+++ incubator/stdcxx/branches/4.2.0/src/limits_bits.cpp Mon Oct 15 17:16:04 2007
@@ -69,11 +69,19 @@
 
 #  endif   // _RWSTD_NO_LONG_DOUBLE
 
+#  ifndef _RWSTD_NO_OBJECT_MANGLING
+
 extern "C" {
 
+#  else   // if defined (_RWSTD_NO_OBJECT_MANGLING)
+
+extern "C++" {
+
+#  endif   // _RWSTD_NO_OBJECT_MANGLING
+
 // The constants below are declared in <limits> but with a different
-// type. C linkage is used to defeat MSVC and other "clever" compilers
-// that mangle the type of objects into their names.
+// type. C linkage is (conditionally) used to defeat MSVC and other
+// "clever" compilers that mangle the type of objects into their names.
 
 // infinity computed at config time
 _RWSTD_EXPORT extern const _DblBits
@@ -146,10 +154,23 @@
 
 #  endif   // _RWSTD_NO_LONG_DOUBLE
 
-}   // extern "C"
+}   // extern "C"/"C++"
+
 
 #else   // if defined (_RWSTD_NO_INFINITY)
 
+
+#  ifndef _RWSTD_NO_OBJECT_MANGLING
+
+extern "C" {
+
+#  else   // if defined (_RWSTD_NO_OBJECT_MANGLING)
+
+extern "C++" {
+
+#  endif   // _RWSTD_NO_OBJECT_MANGLING
+
+
 // as the last resort compute values at dynamic initialization time
 _RWSTD_EXPORT extern const float __rw_flt_infinity =
 
@@ -221,6 +242,8 @@
 _RWSTD_EXPORT extern const long double __rw_ldbl_denorm_min = 0;
 
 #  endif   // _RWSTD_NO_LONG_DOUBLE
+
+}   // extern "C"/"C++"
 
 #endif   // _RWSTD_NO_INFINITY
 

Modified: incubator/stdcxx/branches/4.2.0/src/num_get.cpp
URL: http://svn.apache.org/viewvc/incubator/stdcxx/branches/4.2.0/src/num_get.cpp?rev=584981&r1=584980&r2=584981&view=diff
==============================================================================
--- incubator/stdcxx/branches/4.2.0/src/num_get.cpp (original)
+++ incubator/stdcxx/branches/4.2.0/src/num_get.cpp Mon Oct 15 17:16:04 2007
@@ -84,8 +84,17 @@
 typedef unsigned char UChar;
 
 
+#ifndef _RWSTD_NO_OBJECT_MANGLING
+
 extern "C" {
 
+#else   // if defined (_RWSTD_NO_OBJECT_MANGLING)
+
+extern "C++" {
+
+#endif   // _RWSTD_NO_OBJECT_MANGLING
+
+
 extern const float       __rw_flt_infinity;
 extern const double      __rw_dbl_infinity;
 
@@ -95,7 +104,7 @@
 
 #endif   // _RWSTD_NO_LONG_DOUBLE
 
-}   // extern "C"
+}   // extern "C"/"C++"
 
 
 const char*