fixed wxScanf() etc. to compile with Visual C++ again
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46341 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -31,31 +31,17 @@
|
||||
#define wxCRT_Vfprintf _vftprintf
|
||||
#define wxCRT_Vprintf _vtprintf
|
||||
#define wxCRT_Vsprintf _vstprintf
|
||||
#define wxCRT_Vscanf _vtscanf
|
||||
#define wxCRT_Vfscanf _vftscanf
|
||||
#define wxCRT_Vsscanf _vstscanf
|
||||
#else /* !TCHAR-aware compilers */
|
||||
|
||||
#if !wxUSE_UNICODE /* ASCII */
|
||||
#define wxCRT_Fprintf fprintf
|
||||
#define wxCRT_Fscanf fscanf
|
||||
#define wxCRT_Printf printf
|
||||
#define wxCRT_Vfprintf vfprintf
|
||||
#define wxCRT_Vprintf vprintf
|
||||
#define wxCRT_Vsprintf vsprintf
|
||||
#define wxCRT_Scanf scanf
|
||||
#define wxCRT_Sscanf sscanf
|
||||
#define wxCRT_Vsscanf vsscanf
|
||||
#endif /* ASCII */
|
||||
#endif /* TCHAR-aware compilers/the others */
|
||||
|
||||
/* Required for wxScanf() etc. */
|
||||
#define wxCRT_VscanfA vscanf
|
||||
#define wxCRT_VsscanfA vsscanf
|
||||
#define wxCRT_VfscanfA vfscanf
|
||||
#define wxCRT_VscanfW vwscanf
|
||||
#define wxCRT_VsscanfW vswscanf
|
||||
#define wxCRT_VfscanfW vfwscanf
|
||||
|
||||
/* printf() family saga */
|
||||
|
||||
@@ -238,6 +224,24 @@
|
||||
#endif
|
||||
|
||||
|
||||
/* Required for wxScanf() etc. */
|
||||
#define wxCRT_ScanfA scanf
|
||||
#define wxCRT_SscanfA sscanf
|
||||
#define wxCRT_FscanfA fscanf
|
||||
#define wxCRT_VsscanfA vsscanf
|
||||
|
||||
#if defined(wxNEED_PRINTF_CONVERSION) || defined(wxNEED_WPRINTF)
|
||||
int wxCRT_ScanfW(const wchar_t *format, ...) ATTRIBUTE_PRINTF_1;
|
||||
int wxCRT_SscanfW(const wchar_t *str, const wchar_t *format, ...) ATTRIBUTE_PRINTF_2;
|
||||
int wxCRT_FscanfW(FILE *stream, const wchar_t *format, ...) ATTRIBUTE_PRINTF_2;
|
||||
int wxCRT_VsscanfW(const wchar_t *str, const wchar_t *format, va_list ap);
|
||||
#else
|
||||
#define wxCRT_ScanfW wscanf
|
||||
#define wxCRT_SscanfW swscanf
|
||||
#define wxCRT_FscanfW fwscanf
|
||||
#define wxCRT_VsscanfW vswscanf
|
||||
#endif
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// user-friendly wrappers to CRT functions
|
||||
// ----------------------------------------------------------------------------
|
||||
@@ -387,21 +391,59 @@ wxVsnprintf(wchar_t *str, size_t size, const wxString& format, va_list argptr);
|
||||
// the type of output string values is determined by the type of format string
|
||||
// only.
|
||||
|
||||
int WXDLLIMPEXP_BASE wxScanf(const char *format, ...);
|
||||
int WXDLLIMPEXP_BASE wxScanf(const wchar_t *format, ...);
|
||||
#define _WX_SCANFUNC_EXTRACT_ARGS_1(x) x
|
||||
#define _WX_SCANFUNC_EXTRACT_ARGS_2(x,y) x, y
|
||||
#define _WX_SCANFUNC_EXTRACT_ARGS(N, args) _WX_SCANFUNC_EXTRACT_ARGS_##N args
|
||||
|
||||
int WXDLLIMPEXP_BASE wxFscanf(FILE *stream, const char *format, ...);
|
||||
int WXDLLIMPEXP_BASE wxFscanf(FILE *stream, const wchar_t *format, ...);
|
||||
#define _WX_VARARG_PASS_WRITABLE(i) a##i
|
||||
|
||||
int WXDLLIMPEXP_BASE wxSscanf(const char *str, const char *format, ...);
|
||||
int WXDLLIMPEXP_BASE wxSscanf(const wchar_t *str, const wchar_t *format, ...);
|
||||
int WXDLLIMPEXP_BASE wxSscanf(const wxCharBuffer& str, const char *format, ...);
|
||||
int WXDLLIMPEXP_BASE wxSscanf(const wxWCharBuffer& str, const wchar_t *format, ...);
|
||||
int WXDLLIMPEXP_BASE wxSscanf(const wxString& str, const char *format, ...);
|
||||
int WXDLLIMPEXP_BASE wxSscanf(const wxString& str, const wchar_t *format, ...);
|
||||
int WXDLLIMPEXP_BASE wxSscanf(const wxCStrData& str, const char *format, ...);
|
||||
int WXDLLIMPEXP_BASE wxSscanf(const wxCStrData& str, const wchar_t *format, ...);
|
||||
#define _WX_DEFINE_SCANFUNC(N, dummy1, name, impl, passfixed, numfixed, fixed)\
|
||||
template<_WX_VARARG_JOIN(N, _WX_VARARG_TEMPL)> \
|
||||
int name(_WX_SCANFUNC_EXTRACT_ARGS(numfixed, fixed), \
|
||||
_WX_VARARG_JOIN(N, _WX_VARARG_ARG)) \
|
||||
{ \
|
||||
return impl(_WX_SCANFUNC_EXTRACT_ARGS(numfixed, passfixed), \
|
||||
_WX_VARARG_JOIN(N, _WX_VARARG_PASS_WRITABLE)); \
|
||||
}
|
||||
|
||||
#define WX_DEFINE_SCANFUNC(name, numfixed, fixed, impl, passfixed) \
|
||||
inline int name(_WX_SCANFUNC_EXTRACT_ARGS(numfixed, fixed)) \
|
||||
{ \
|
||||
return impl(_WX_SCANFUNC_EXTRACT_ARGS(numfixed, passfixed)); \
|
||||
} \
|
||||
_WX_VARARG_ITER(_WX_VARARG_MAX_ARGS, \
|
||||
_WX_DEFINE_SCANFUNC, \
|
||||
dummy1, name, impl, passfixed, numfixed, fixed)
|
||||
|
||||
WX_DEFINE_SCANFUNC(wxScanf, 1, (const char *format),
|
||||
wxCRT_ScanfA, (format))
|
||||
WX_DEFINE_SCANFUNC(wxScanf, 1, (const wchar_t *format),
|
||||
wxCRT_ScanfW, (format))
|
||||
|
||||
WX_DEFINE_SCANFUNC(wxFscanf, 2, (FILE *stream, const char *format),
|
||||
wxCRT_FscanfA, (stream, format))
|
||||
WX_DEFINE_SCANFUNC(wxFscanf, 2, (FILE *stream, const wchar_t *format),
|
||||
wxCRT_FscanfW, (stream, format))
|
||||
|
||||
WX_DEFINE_SCANFUNC(wxSscanf, 2, (const char *str, const char *format),
|
||||
wxCRT_SscanfA, (str, format))
|
||||
WX_DEFINE_SCANFUNC(wxSscanf, 2, (const wchar_t *str, const wchar_t *format),
|
||||
wxCRT_SscanfW, (str, format))
|
||||
WX_DEFINE_SCANFUNC(wxSscanf, 2, (const wxCharBuffer& str, const char *format),
|
||||
wxCRT_SscanfA, (str.data(), format))
|
||||
WX_DEFINE_SCANFUNC(wxSscanf, 2, (const wxWCharBuffer& str, const wchar_t *format),
|
||||
wxCRT_SscanfW, (str.data(), format))
|
||||
WX_DEFINE_SCANFUNC(wxSscanf, 2, (const wxString& str, const char *format),
|
||||
wxCRT_SscanfA, (str.mb_str(), format))
|
||||
WX_DEFINE_SCANFUNC(wxSscanf, 2, (const wxString& str, const wchar_t *format),
|
||||
wxCRT_SscanfW, (str.wc_str(), format))
|
||||
WX_DEFINE_SCANFUNC(wxSscanf, 2, (const wxCStrData& str, const char *format),
|
||||
wxCRT_SscanfA, (str.AsCharBuf(), format))
|
||||
WX_DEFINE_SCANFUNC(wxSscanf, 2, (const wxCStrData& str, const wchar_t *format),
|
||||
wxCRT_SscanfW, (str.AsWCharBuf(), format))
|
||||
|
||||
// Visual C++ doesn't provide vsscanf()
|
||||
#ifndef __VISUALC___
|
||||
int WXDLLIMPEXP_BASE wxVsscanf(const char *str, const char *format, va_list ap);
|
||||
int WXDLLIMPEXP_BASE wxVsscanf(const wchar_t *str, const wchar_t *format, va_list ap);
|
||||
int WXDLLIMPEXP_BASE wxVsscanf(const wxCharBuffer& str, const char *format, va_list ap);
|
||||
@@ -410,5 +452,6 @@ int WXDLLIMPEXP_BASE wxVsscanf(const wxString& str, const char *format, va_list
|
||||
int WXDLLIMPEXP_BASE wxVsscanf(const wxString& str, const wchar_t *format, va_list ap);
|
||||
int WXDLLIMPEXP_BASE wxVsscanf(const wxCStrData& str, const char *format, va_list ap);
|
||||
int WXDLLIMPEXP_BASE wxVsscanf(const wxCStrData& str, const wchar_t *format, va_list ap);
|
||||
#endif // !__VISUALC__
|
||||
|
||||
#endif /* _WX_WXCRTVARARG_H_ */
|
||||
|
Reference in New Issue
Block a user