X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/02a775c98e06729e5bdcd7c7bd27b44fe7a83d24..44893b87abdc8df271363b08a5d1b57cf7e4e04c:/include/wx/wxchar.h?ds=inline diff --git a/include/wx/wxchar.h b/include/wx/wxchar.h index 2a332e3901..ee7f0b225f 100644 --- a/include/wx/wxchar.h +++ b/include/wx/wxchar.h @@ -52,6 +52,9 @@ # define wxUSE_WCHAR_T 1 #endif // Unicode +// Required for wxPrintf() etc +#include + // ---------------------------------------------------------------------------- // define wxHAVE_TCHAR_FUNCTIONS for the compilers which support the // wide-character functions @@ -117,7 +120,7 @@ // time.h functions -- none defined in tchar.h #define wxAsctime asctime #define wxCtime ctime -#elif defined(__MWERKS__) +#elif defined(__MWERKS__) || defined(__VISAGECPP__) // for wcslen #if wxUSE_WCHAR_T #include @@ -324,7 +327,7 @@ typedef _TUCHAR wxUChar; // VS: wxWindows used to define wxChar as __WCHAR_TYPE__ here. However, this doesn't // work with new GCC 3.x compilers because wchar_t is C++'s builtin type in the new -// standard. OTOH, old compilers (GCC 2.x) won't accept new definition +// standard. OTOH, old compilers (GCC 2.x) won't accept new definition // of wx{S,U}Char, therefore we have to define wxChar conditionally depending on // detected compiler & compiler version. // The most complicated case is the infamous so-called "gcc-2.96" which does not @@ -395,23 +398,18 @@ typedef _TUCHAR wxUChar; # define wxFgets fgetws # define wxFputc fputwc # define wxFputchar fputwchar -# define wxFprintf fwprintf -# define wxFscanf fwscanf # define wxGetc getwc # define wxGetchar getwchar # define wxGets getws -# define wxPrintf wprintf # define wxPutc wputc # define wxPutchar wputchar # define wxPuts putws -# define wxScanf wscanf -# define wxSnprintf swprintf -# define wxSscanf swscanf # define wxUngetc ungetwc -# define wxVfprint vfwprintf -# define wxVprintf vwprintf -# define wxVsscanf vswscanf -# define wxVsnprintf vswprintf + +// we need %s to %ls conversion for printf and scanf etc +# define wxNEED_PRINTF_CONVERSION +# define wxHAS_VSNPRINTF +# define wxHAS_SNPRINTF // glibc doesn't have wc equivalents of the other stuff # define wxNEED_WX_STDIO_H @@ -609,6 +607,41 @@ WXDLLEXPORT size_t wxWC2MB(char *buf, const wchar_t *psz, size_t n); WXDLLEXPORT bool wxOKlibc(); // for internal use +// We need conversion from %s to %ls in Unicode mode under Unix +#ifdef wxNEED_PRINTF_CONVERSION + +#include // need FILE + +int wxScanf( const wxChar *format, ... ) ATTRIBUTE_PRINTF_2; +int wxSscanf( const wxChar *str, const wxChar *format, ... ) ATTRIBUTE_PRINTF_3; +int wxFscanf( FILE *stream, const wxChar *format, ... ) ATTRIBUTE_PRINTF_3; +int wxVsscanf( const wxChar *str, const wxChar *format, va_list ap ); +int wxPrintf( const wxChar *format, ... ) ATTRIBUTE_PRINTF_2; +int wxSnprintf( wxChar *str, size_t size, const wxChar *format, ... ) ATTRIBUTE_PRINTF_4; +int wxSprintf( wxChar *str, const wxChar *format, ... ) ATTRIBUTE_PRINTF_3; +int wxFprintf( FILE *stream, const wxChar *format, ... ) ATTRIBUTE_PRINTF_3; +int wxVfprint( const wxChar *format, va_list ap ); +int wxVprintf( const wxChar *format, va_list ap ); +int wxVsnprintf( wxChar *str, size_t size, const wxChar *format, va_list ap ); +int wxVsprintf( wxChar *str, const wxChar *format, va_list ap ); + +#endif // wxNEED_PRINTF_CONVERSION + +#if !defined(wxSnprintf) && !defined(wxHAS_SNPRINTF) +// wxSnprintf() is like snprintf() if it's available and sprintf() (always +// available, but dangerous!) if not. +WXDLLEXPORT int wxSnprintf(wxChar *buf, size_t len, + const wxChar *format, + ...) ATTRIBUTE_PRINTF_3; +#endif + +#if !defined(wxVsnprintf) && !defined(wxHAS_VSNPRINTF) +// and wxVsnprintf() is like vsnprintf() or vsprintf() +WXDLLEXPORT int wxVsnprintf(wxChar *buf, size_t len, + const wxChar *format, + va_list argptr); +#endif + // if libc versions are not available, use replacements defined in wxchar.cpp #ifndef wxStrdup WXDLLEXPORT wxChar * wxStrdup(const wxChar *psz);