]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/wxchar.h
compilation fix
[wxWidgets.git] / include / wx / wxchar.h
index 22824283dd6c4ca551192e2c8f205863dcb3a2a5..82e17f0d6fff43c904cd1fe9bbd3062b47bc593c 100644 (file)
@@ -1,11 +1,11 @@
 /*
  * Name:        wx/wxchar.h
  * Purpose:     Declarations common to wx char/wchar_t usage (wide chars)
- * Author:      Joel Farley, Ove Kåven
+ * Author:      Joel Farley, Ove Ken
  * Modified by: Vadim Zeitlin, Robert Roebling, Ron Lee
  * Created:     1998/06/12
  * RCS-ID:      $Id$
- * Copyright:   (c) 1998-2002 Joel Farley, Ove Kåven, Robert Roebling, Ron Lee
+ * Copyright:   (c) 1998-2002 Joel Farley, Ove Ken, Robert Roebling, Ron Lee
  * Licence:     wxWindows licence
  */
 
@@ -883,7 +883,7 @@ WXDLLIMPEXP_BASE bool wxOKlibc(); /* for internal use */
             #define wxVsnprintf_    _vsnwprintf
             #define wxSnprintf_     _snwprintf
         #endif /* Watcom */
-        #if defined(HAVE__VSNWPRINTF) && defined(HAVE_UNIX98_PRINTF)
+        #if defined(HAVE__VSNWPRINTF)
             #define wxVsnprintf_    _vsnwprintf
         /* MinGW?MSVCRT has the wrong vswprintf */
         /* Mac OS X has a somehow buggy vswprintf */
@@ -893,13 +893,13 @@ WXDLLIMPEXP_BASE bool wxOKlibc(); /* for internal use */
     #else /* ASCII */
         /* all versions of CodeWarrior supported by wxWidgets apparently have */
         /* both snprintf() and vsnprintf() */
-        #if (defined(HAVE_SNPRINTF) && defined(HAVE_UNIX98_PRINTF)) \
+        #if defined(HAVE_SNPRINTF) \
             || defined(__MWERKS__) || defined(__WATCOMC__)
             #ifndef HAVE_BROKEN_SNPRINTF_DECL
                 #define wxSnprintf_     snprintf
             #endif
         #endif
-        #if (defined(HAVE_VSNPRINTF) && defined(HAVE_UNIX98_PRINTF)) \
+        #if defined(HAVE_VSNPRINTF) \
             || defined(__MWERKS__) || defined(__WATCOMC__)
             #if defined __cplusplus && defined HAVE_BROKEN_VSNPRINTF_DECL
                 #define wxVsnprintf_    wx_fixed_vsnprintf
@@ -908,7 +908,39 @@ WXDLLIMPEXP_BASE bool wxOKlibc(); /* for internal use */
             #endif
         #endif
     #endif
-#endif /* wxVsnprintf_ not defined yet */
+#endif /* wxVsnprintf_ not defined yet && !wxUSE_PRINTF_POS_PARAMS */
+
+#if !defined( wxVsnprintf_ ) && wxUSE_PRINTF_POS_PARAMS
+    /*
+        The systems where vsnprintf() supports positionals should define
+        the HAVE_UNIX98_PRINTF symbol.
+
+        On systems which don't (e.g. Windows) we are forced to use
+        our wxVsnprintf() implementation.
+    */
+    #if defined(HAVE_UNIX98_PRINTF)
+        #if wxUSE_UNICODE
+            #define wxVsnprintf_        vswprintf
+        #else /* ASCII */
+            #if defined __cplusplus && defined HAVE_BROKEN_VSNPRINTF_DECL
+                #define wxVsnprintf_    wx_fixed_vsnprintf
+            #else
+                #define wxVsnprintf_    vsnprintf
+            #endif
+        #endif
+    #else
+        // the only exception on Windows is VC++ 8.0; it provides a new family
+        // of printf() functions with positional parameter support which should
+        // behave mostly identic to our wxVsnprintf() implementation
+        #if defined(__VISUALC__) && __VISUALC__ >= 1400
+            #if wxUSE_UNICODE
+                #define wxVsnprintf_    _vsprintf_p
+            #else
+                #define wxVsnprintf_    _vswprintf_p
+            #endif
+        #endif
+    #endif
+#endif  // !defined( wxVsnprintf_ ) && wxUSE_PRINTF_POS_PARAMS
 
 #ifndef wxSnprintf_
     /* no [v]snprintf(), cook our own */