X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7a828c7ffb2e77f6e8c65b3d72f7364826131d1f..fdc62f44622dfcfea2f43910478fe5bb8ac0e938:/include/wx/wxchar.h diff --git a/include/wx/wxchar.h b/include/wx/wxchar.h index 22824283dd..82e17f0d6f 100644 --- a/include/wx/wxchar.h +++ b/include/wx/wxchar.h @@ -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 K�en * 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 K�en, 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 */