the wxFormatString hack used in wxFileTypeInfo variadic ctors doesn't work anymore, replaced with something that does
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48233 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -125,25 +125,32 @@ private:
|
|||||||
const wxString& desc,
|
const wxString& desc,
|
||||||
va_list argptr);
|
va_list argptr);
|
||||||
|
|
||||||
#if !wxUSE_UTF8_LOCALE_ONLY
|
void VarArgInit(const wxString *mimeType,
|
||||||
void VarArgInitWchar(const wxChar *mimeType,
|
const wxString *openCmd,
|
||||||
const wxChar *openCmd,
|
const wxString *printCmd,
|
||||||
const wxChar *printCmd,
|
const wxString *desc,
|
||||||
const wxChar *desc,
|
|
||||||
// the other parameters form a NULL terminated list of
|
// the other parameters form a NULL terminated list of
|
||||||
// extensions
|
// extensions
|
||||||
...);
|
...);
|
||||||
#endif
|
|
||||||
#if wxUSE_UNICODE_UTF8
|
|
||||||
void VarArgInitUtf8(const char *mimeType,
|
|
||||||
const char *openCmd,
|
|
||||||
const char *printCmd,
|
|
||||||
const char *desc,
|
|
||||||
// the other parameters form a NULL terminated list of
|
|
||||||
// extensions
|
|
||||||
...);
|
|
||||||
#endif
|
|
||||||
public:
|
public:
|
||||||
|
// NB: This is a helper to get implicit conversion of variadic ctor's
|
||||||
|
// fixed arguments into something that can be passed to VarArgInit().
|
||||||
|
// Do not use, it's used by the ctor only.
|
||||||
|
struct WXDLLIMPEXP_BASE CtorString
|
||||||
|
{
|
||||||
|
CtorString(const char *str) : m_str(str) {}
|
||||||
|
CtorString(const wchar_t *str) : m_str(str) {}
|
||||||
|
CtorString(const wxString& str) : m_str(str) {}
|
||||||
|
CtorString(const wxCStrData& str) : m_str(str) {}
|
||||||
|
CtorString(const wxCharBuffer& str) : m_str(str) {}
|
||||||
|
CtorString(const wxWCharBuffer& str) : m_str(str) {}
|
||||||
|
|
||||||
|
operator const wxString*() const { return &m_str; }
|
||||||
|
|
||||||
|
wxString m_str;
|
||||||
|
};
|
||||||
|
|
||||||
// ctors
|
// ctors
|
||||||
// a normal item
|
// a normal item
|
||||||
|
|
||||||
@@ -156,14 +163,11 @@ public:
|
|||||||
// // just NULL!)
|
// // just NULL!)
|
||||||
// ...);
|
// ...);
|
||||||
WX_DEFINE_VARARG_FUNC_CTOR(wxFileTypeInfo,
|
WX_DEFINE_VARARG_FUNC_CTOR(wxFileTypeInfo,
|
||||||
// NB: these are not format strings, using
|
4, (const CtorString&,
|
||||||
// wxFormatString here is a hack to get
|
const CtorString&,
|
||||||
// implicit conversion to wchar_t*/char*
|
const CtorString&,
|
||||||
4, (const wxFormatString&,
|
const CtorString&),
|
||||||
const wxFormatString&,
|
VarArgInit, VarArgInit)
|
||||||
const wxFormatString&,
|
|
||||||
const wxFormatString&),
|
|
||||||
VarArgInitWchar, VarArgInitUtf8)
|
|
||||||
#ifdef __WATCOMC__
|
#ifdef __WATCOMC__
|
||||||
// workaround for http://bugzilla.openwatcom.org/show_bug.cgi?id=351
|
// workaround for http://bugzilla.openwatcom.org/show_bug.cgi?id=351
|
||||||
WX_VARARG_WATCOM_WORKAROUND_CTOR(
|
WX_VARARG_WATCOM_WORKAROUND_CTOR(
|
||||||
@@ -172,40 +176,40 @@ public:
|
|||||||
const wxString&,
|
const wxString&,
|
||||||
const wxString&,
|
const wxString&,
|
||||||
const wxString&),
|
const wxString&),
|
||||||
(wxFormatString(f1),
|
(CtorString(f1),
|
||||||
wxFormatString(f2),
|
CtorString(f2),
|
||||||
wxFormatString(f3),
|
CtorString(f3),
|
||||||
wxFormatString(f4)));
|
CtorString(f4)));
|
||||||
WX_VARARG_WATCOM_WORKAROUND_CTOR(
|
WX_VARARG_WATCOM_WORKAROUND_CTOR(
|
||||||
wxFileTypeInfo,
|
wxFileTypeInfo,
|
||||||
4, (const wxCStrData&,
|
4, (const wxCStrData&,
|
||||||
const wxCStrData&,
|
const wxCStrData&,
|
||||||
const wxCStrData&,
|
const wxCStrData&,
|
||||||
const wxCStrData&),
|
const wxCStrData&),
|
||||||
(wxFormatString(f1),
|
(CtorString(f1),
|
||||||
wxFormatString(f2),
|
CtorString(f2),
|
||||||
wxFormatString(f3),
|
CtorString(f3),
|
||||||
wxFormatString(f4)));
|
CtorString(f4)));
|
||||||
WX_VARARG_WATCOM_WORKAROUND_CTOR(
|
WX_VARARG_WATCOM_WORKAROUND_CTOR(
|
||||||
wxFileTypeInfo,
|
wxFileTypeInfo,
|
||||||
4, (const char*,
|
4, (const char*,
|
||||||
const char*,
|
const char*,
|
||||||
const char*,
|
const char*,
|
||||||
const char*),
|
const char*),
|
||||||
(wxFormatString(f1),
|
(CtorString(f1),
|
||||||
wxFormatString(f2),
|
CtorString(f2),
|
||||||
wxFormatString(f3),
|
CtorString(f3),
|
||||||
wxFormatString(f4)));
|
CtorString(f4)));
|
||||||
WX_VARARG_WATCOM_WORKAROUND_CTOR(
|
WX_VARARG_WATCOM_WORKAROUND_CTOR(
|
||||||
wxFileTypeInfo,
|
wxFileTypeInfo,
|
||||||
4, (const wchar_t*,
|
4, (const wchar_t*,
|
||||||
const wchar_t*,
|
const wchar_t*,
|
||||||
const wchar_t*,
|
const wchar_t*,
|
||||||
const wchar_t*),
|
const wchar_t*),
|
||||||
(wxFormatString(f1),
|
(CtorString(f1),
|
||||||
wxFormatString(f2),
|
CtorString(f2),
|
||||||
wxFormatString(f3),
|
CtorString(f3),
|
||||||
wxFormatString(f4)));
|
CtorString(f4)));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// the array elements correspond to the parameters of the ctor above in
|
// the array elements correspond to the parameters of the ctor above in
|
||||||
|
@@ -146,44 +146,19 @@ void wxFileTypeInfo::DoVarArgInit(const wxString& mimeType,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NB: DoVarArgInit uses WX_VA_ARG_STRING macro to extract the string and this
|
void wxFileTypeInfo::VarArgInit(const wxString *mimeType,
|
||||||
// macro interprets the argument as char* or wchar_t* depending on build
|
const wxString *openCmd,
|
||||||
// (and in UTF8 build, on the current locale). Because only one of the
|
const wxString *printCmd,
|
||||||
// vararg forms below is called and the decision about which one gets
|
const wxString *desc,
|
||||||
// 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_list argptr;
|
||||||
va_start(argptr, desc);
|
va_start(argptr, desc);
|
||||||
|
|
||||||
DoVarArgInit(mimeType, openCmd, printCmd, desc, argptr);
|
DoVarArgInit(*mimeType, *openCmd, *printCmd, *desc, argptr);
|
||||||
|
|
||||||
va_end(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)
|
wxFileTypeInfo::wxFileTypeInfo(const wxArrayString& sArray)
|
||||||
|
Reference in New Issue
Block a user