]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/beforestd.h
support SDK < 10.6, fixes #14902
[wxWidgets.git] / include / wx / beforestd.h
index 9196f32a08ad1e76123ed8f72ea2c3975dbad706..d4b8d940ce8cc9b23020e938d0c133d7b305249b 100644 (file)
@@ -1,12 +1,12 @@
 ///////////////////////////////////////////////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////////////
-// Name:        include/wx/beforestd.h
+// Name:        wx/beforestd.h
 // Purpose:     #include before STL headers
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     07/07/03
 // RCS-ID:      $Id$
 // Copyright:   (c) 2003 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
 // Purpose:     #include before STL headers
 // Author:      Vadim Zeitlin
 // Modified by:
 // Created:     07/07/03
 // RCS-ID:      $Id$
 // Copyright:   (c) 2003 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence:     wxWidgets licence
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 /**
 ///////////////////////////////////////////////////////////////////////////////
 
 /**
     it can be included several times.
  */
 
     it can be included several times.
  */
 
-// VC 7.x isn't as bad as VC6 and doesn't give these warnings
-#if defined(__VISUALC__) && __VISUALC__ <= 1200
-    // MSVC 5 does not have this
-    #if __VISUALC__ > 1100
-        #pragma warning(push, 1)
-    #else // VC 5
-        // 'expression' : signed/unsigned mismatch 
-        #pragma warning(disable:4018) 
-
-        // 'conversion' : conversion from 'type1' to 'type2', 
-        // possible loss of data 
-        #pragma warning(disable:4244) 
-
-        // C++ language change: to explicitly specialize class template 
-        // 'identifier' use the following syntax 
-        #pragma warning(disable:4663) 
-    #endif
-
+// VC 7.x isn't as bad as VC6 and doesn't give these warnings but eVC (which
+// defines _MSC_VER as 1201) does need to be included as it's VC6-like
+#if defined(__VISUALC__) && __VISUALC__ <= 1201
     // these warning have to be disabled and not just temporarily disabled
     // because they will be given at the end of the compilation of the
     // these warning have to be disabled and not just temporarily disabled
     // because they will be given at the end of the compilation of the
-    // current source and there is absolutely nothing we can do about them
+    // current source and there is absolutely nothing we can do about them so
+    // disable them before warning(push) below
 
     // 'foo': unreferenced inline function has been removed
     #pragma warning(disable:4514)
 
     // 'foo': unreferenced inline function has been removed
     #pragma warning(disable:4514)
 
     // 'id': identifier was truncated to 'num' characters in the debug info
     #pragma warning(disable:4786)
 
     // 'id': identifier was truncated to 'num' characters in the debug info
     #pragma warning(disable:4786)
+
+    // MSVC 5 does not have this
+    #if __VISUALC__ > 1100
+        // we have to disable (and reenable in afterstd.h) this one because,
+        // even though it is of level 4, it is not disabled by warning(push, 1)
+        // below for VC7.1!
+
+        // unreachable code
+        #pragma warning(disable:4702)
+
+        #pragma warning(push, 1)
+    #else // VC 5
+        // 'expression' : signed/unsigned mismatch
+        #pragma warning(disable:4018)
+
+        // 'identifier' : unreferenced formal parameter
+        #pragma warning(disable:4100)
+
+        // 'conversion' : conversion from 'type1' to 'type2',
+        // possible loss of data
+        #pragma warning(disable:4244)
+
+        // C++ language change: to explicitly specialize class template
+        // 'identifier' use the following syntax
+        #pragma warning(disable:4663)
+    #endif
 #endif // VC++ < 7
 
 #endif // VC++ < 7
 
+/**
+    GCC's visibility support is broken for libstdc++ in some older versions
+    (namely Debian/Ubuntu's GCC 4.1, see
+    https://bugs.launchpad.net/ubuntu/+source/gcc-4.1/+bug/109262). We fix it
+    here by mimicking newer versions' behaviour of using default visibility
+    for libstdc++ code.
+ */
+#if defined(HAVE_VISIBILITY) && defined(HAVE_BROKEN_LIBSTDCXX_VISIBILITY)
+    #pragma GCC visibility push(default)
+#endif