fixed vararg functions with format argument to not use wxString or reference argument (the latter is invalid C++, the former doesn't work with Watcom and produces at least warnings with GCC 3.3)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45781 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2007-05-03 10:50:25 +00:00
parent 30957174e5
commit d1f6e2cfe2
14 changed files with 543 additions and 143 deletions

View File

@@ -111,15 +111,12 @@ wxString wxMimeTypeCommands::GetVerbCmd(size_t n) const
// wxFileTypeInfo
// ----------------------------------------------------------------------------
void wxFileTypeInfo::VarArgInit(const wxString& mimeType,
const wxString& openCmd,
const wxString& printCmd,
const wxString& desc,
...)
void wxFileTypeInfo::DoVarArgInit(const wxString& mimeType,
const wxString& openCmd,
const wxString& printCmd,
const wxString& desc,
va_list argptr)
{
va_list argptr;
va_start(argptr, desc);
m_mimeType = mimeType;
m_openCmd = openCmd;
m_printCmd = printCmd;
@@ -146,9 +143,46 @@ void wxFileTypeInfo::VarArgInit(const wxString& mimeType,
m_exts.Add(ext.GetString());
}
}
// NB: DoVarArgInit uses WX_VA_ARG_STRING macro to extract the string and this
// macro interprets the argument as char* or wchar_t* depending on build
// (and in UTF8 build, on the current locale). Because only one of the
// vararg forms below is called and the decision about which one gets
// called depends on the same conditions WX_VA_ARG_STRING uses, we can
// implement both of them in the exact same way:
#if !wxUSE_UTF8_LOCALE_ONLY
void wxFileTypeInfo::VarArgInitWchar(const wxChar *mimeType,
const wxChar *openCmd,
const wxChar *printCmd,
const wxChar *desc,
...)
{
va_list argptr;
va_start(argptr, desc);
DoVarArgInit(mimeType, openCmd, printCmd, desc, argptr);
va_end(argptr);
}
#endif // !wxUSE_UTF8_LOCALE_ONLY
#if wxUSE_UNICODE_UTF8
void wxFileTypeInfo::VarArgInitUtf8(const char *mimeType,
const char *openCmd,
const char *printCmd,
const char *desc,
...)
{
va_list argptr;
va_start(argptr, desc);
DoVarArgInit(mimeType, openCmd, printCmd, desc, argptr);
va_end(argptr);
}
#endif // wxUSE_UNICODE_UTF8
wxFileTypeInfo::wxFileTypeInfo(const wxArrayString& sArray)