wxCHECK_MSG( wxStrstr(format, _T("%c")) == NULL, -1,
_T("incomplete vswscanf implementation doesn't allow %c") );
- va_list argcopy;
- wxVaCopy(argcopy, argptr);
- return vsscanf(wxConvLibc.cWX2MB(ws), wxConvLibc.cWX2MB(format), argcopy);
+ return vsscanf(wxConvLibc.cWX2MB(ws), wxConvLibc.cWX2MB(format), argptr);
}
int vfwscanf(FILE *stream, const wxChar *format, va_list argptr)
// wrappers to printf and scanf function families
// ----------------------------------------------------------------------------
-int wxDoSprintf(char *str, const wxString& format, ...)
+#if !wxUSE_UTF8_LOCALE_ONLY
+int wxDoSprintfWchar(char *str, const wxChar *format, ...)
+{
+ va_list argptr;
+ va_start(argptr, format);
+
+ int rv = wxVsprintf(str, format, argptr);
+
+ va_end(argptr);
+ return rv;
+}
+#endif // !wxUSE_UTF8_LOCALE_ONLY
+
+#if wxUSE_UNICODE_UTF8
+int wxDoSprintfUtf8(char *str, const char *format, ...)
{
va_list argptr;
va_start(argptr, format);
va_end(argptr);
return rv;
}
+#endif // wxUSE_UNICODE_UTF8
#if wxUSE_UNICODE
-int wxDoSprintf(wchar_t *str, const wxString& format, ...)
+
+#if !wxUSE_UTF8_LOCALE_ONLY
+int wxDoSprintfWchar(wchar_t *str, const wxChar *format, ...)
{
va_list argptr;
va_start(argptr, format);
va_end(argptr);
return rv;
}
-#endif
+#endif // !wxUSE_UTF8_LOCALE_ONLY
+
+#if wxUSE_UNICODE_UTF8
+int wxDoSprintfUtf8(wchar_t *str, const char *format, ...)
+{
+ va_list argptr;
+ va_start(argptr, format);
+
+ int rv = wxVsprintf(str, format, argptr);
+
+ va_end(argptr);
+ return rv;
+}
+#endif // wxUSE_UNICODE_UTF8
+
+#endif // wxUSE_UNICODE
+
+#if !wxUSE_UTF8_LOCALE_ONLY
+int wxDoSnprintfWchar(char *str, size_t size, const wxChar *format, ...)
+{
+ va_list argptr;
+ va_start(argptr, format);
+
+ int rv = wxVsnprintf(str, size, format, argptr);
+
+ va_end(argptr);
+ return rv;
+}
+#endif // !wxUSE_UTF8_LOCALE_ONLY
-int wxDoSnprintf(char *str, size_t size, const wxString& format, ...)
+#if wxUSE_UNICODE_UTF8
+int wxDoSnprintfUtf8(char *str, size_t size, const char *format, ...)
{
va_list argptr;
va_start(argptr, format);
va_end(argptr);
return rv;
}
+#endif // wxUSE_UNICODE_UTF8
#if wxUSE_UNICODE
-int wxDoSnprintf(wchar_t *str, size_t size, const wxString& format, ...)
+
+#if !wxUSE_UTF8_LOCALE_ONLY
+int wxDoSnprintfWchar(wchar_t *str, size_t size, const wxChar *format, ...)
{
va_list argptr;
va_start(argptr, format);
va_end(argptr);
return rv;
}
-#endif
+#endif // !wxUSE_UTF8_LOCALE_ONLY
+
+#if wxUSE_UNICODE_UTF8
+int wxDoSnprintfUtf8(wchar_t *str, size_t size, const char *format, ...)
+{
+ va_list argptr;
+ va_start(argptr, format);
+
+ int rv = wxVsnprintf(str, size, format, argptr);
+
+ va_end(argptr);
+ return rv;
+}
+#endif // wxUSE_UNICODE_UTF8
+
+#endif // wxUSE_UNICODE
#ifdef HAVE_BROKEN_VSNPRINTF_DECL
#endif
#if wxUSE_UNICODE
+
+#if !wxUSE_UTF8_LOCALE_ONLY
static int ConvertStringToBuf(const wxString& s, char *out, size_t outsize)
{
const wxWX2WCbuf buf = s.wc_str();
else
return wxConvLibc.FromWChar(NULL, 0, buf);
}
+#endif // !wxUSE_UTF8_LOCALE_ONLY
#if wxUSE_UNICODE_UTF8
static int ConvertStringToBuf(const wxString& s, wchar_t *out, size_t outsize)
// else: not enough space
return len;
}
-#endif
+#endif // wxUSE_UNICODE_UTF8
template<typename T>
static size_t PrintfViaString(T *out, size_t outsize,
const wxString& format, va_list argptr)
{
- va_list argcopy;
- wxVaCopy(argcopy, argptr);
-
wxString s;
- s.PrintfV(format, argcopy);
+ s.PrintfV(format, argptr);
return ConvertStringToBuf(s, out, outsize);
}
int wxVsprintf(char *str, const wxString& format, va_list argptr)
{
- va_list argcopy;
- wxVaCopy(argcopy, argptr);
-
#if wxUSE_UTF8_LOCALE_ONLY
- return vsprintf(str, format.wx_str(), argcopy);
+ return vsprintf(str, format.wx_str(), argptr);
#else
#if wxUSE_UNICODE_UTF8
if ( wxLocaleIsUtf8 )
- return vsprintf(str, format.wx_str(), argcopy);
+ return vsprintf(str, format.wx_str(), argptr);
else
#endif
#if wxUSE_UNICODE
- return PrintfViaString(str, wxNO_LEN, format, argcopy);
+ return PrintfViaString(str, wxNO_LEN, format, argptr);
#else
- return wxCRT_Vsprintf(str, format, argcopy);
+ return wxCRT_Vsprintf(str, format, argptr);
#endif
#endif
}
#if wxUSE_UNICODE
int wxVsprintf(wchar_t *str, const wxString& format, va_list argptr)
{
- va_list argcopy;
- wxVaCopy(argcopy, argptr);
-
#if wxUSE_UNICODE_WCHAR
- return wxCRT_Vsprintf(str, format, argcopy);
+ return wxCRT_Vsprintf(str, format, argptr);
#else // wxUSE_UNICODE_UTF8
#if !wxUSE_UTF8_LOCALE_ONLY
if ( !wxLocaleIsUtf8 )
- return wxCRT_Vsprintf(str, format, argcopy);
+ return wxCRT_Vsprintf(str, format, argptr);
else
#endif
- return PrintfViaString(str, wxNO_LEN, format, argcopy);
+ return PrintfViaString(str, wxNO_LEN, format, argptr);
#endif // wxUSE_UNICODE_UTF8
}
#endif // wxUSE_UNICODE
int wxVsnprintf(char *str, size_t size, const wxString& format, va_list argptr)
{
int rv;
- va_list argcopy;
- wxVaCopy(argcopy, argptr);
-
#if wxUSE_UTF8_LOCALE_ONLY
- rv = vsnprintf(str, size, format.wx_str(), argcopy);
+ rv = vsnprintf(str, size, format.wx_str(), argptr);
#else
#if wxUSE_UNICODE_UTF8
if ( wxLocaleIsUtf8 )
- rv = vsnprintf(str, size, format.wx_str(), argcopy);
+ rv = vsnprintf(str, size, format.wx_str(), argptr);
else
#endif
#if wxUSE_UNICODE
// NB: if this code is called, then wxString::PrintV() would use the
// wchar_t* version of wxVsnprintf(), so it's safe to use PrintV()
// from here
- rv = PrintfViaString(str, size, format, argcopy);
+ rv = PrintfViaString(str, size, format, argptr);
}
#else
- rv = wxCRT_Vsnprintf(str, size, format, argcopy);
+ rv = wxCRT_Vsnprintf(str, size, format, argptr);
#endif
#endif
int wxVsnprintf(wchar_t *str, size_t size, const wxString& format, va_list argptr)
{
int rv;
- va_list argcopy;
- wxVaCopy(argcopy, argptr);
#if wxUSE_UNICODE_WCHAR
- rv = wxCRT_Vsnprintf(str, size, format, argcopy);
+ rv = wxCRT_Vsnprintf(str, size, format, argptr);
#else // wxUSE_UNICODE_UTF8
#if !wxUSE_UTF8_LOCALE_ONLY
if ( !wxLocaleIsUtf8 )
- rv = wxCRT_Vsnprintf(str, size, format, argcopy);
+ rv = wxCRT_Vsnprintf(str, size, format, argptr);
else
#endif
{
// NB: if this code is called, then wxString::PrintV() would use the
// char* version of wxVsnprintf(), so it's safe to use PrintV()
// from here
- rv = PrintfViaString(str, size, format, argcopy);
+ rv = PrintfViaString(str, size, format, argptr);
}
#endif // wxUSE_UNICODE_UTF8
#endif
}
+#endif // wxNEED_WX_STDLIB_H
+
+#ifdef wxNEED_WXSYSTEM
int WXDLLEXPORT wxSystem(const wxChar *psz)
{
return system(wxConvLibc.cWX2MB(psz));
}
-
-#endif // wxNEED_WX_STDLIB_H
+#endif // wxNEED_WXSYSTEM
#ifdef wxNEED_WX_TIME_H
WXDLLEXPORT size_t
if ( endptr )
{
- const wxChar& endref = *i;
- *endptr = &(wxChar&)endref;
+ *endptr = (wxChar*)(nptr + (i - wxstr.begin()));
}
return sum;