// n-th variadic argument desired representation
ArgumentType GetArgumentType(unsigned n) const;
+ // returns the value passed to ctor, only converted to wxString, similarly
+ // to other InputAsXXX() methods
+ wxString InputAsString() const;
+
#if !wxUSE_UNICODE_WCHAR
operator const char*() const
{ return const_cast<wxFormatString*>(this)->AsChar(); }
private:
- // InputAsChar() returns the value converted passed to ctor, only converted
+ // InputAsChar() returns the value passed to ctor, only converted
// to char, while AsChar() takes the the string returned by InputAsChar()
// and does format string conversion on it as well (and similarly for
// ..AsWChar() below)
#define wxCRT_FprintfNative wxCRT_FprintfA
#endif
-WX_DEFINE_VARARG_FUNC(int, wxPrintf, 1, (const wxFormatString&),
- wxCRT_PrintfNative, wxCRT_PrintfA)
-WX_DEFINE_VARARG_FUNC(int, wxFprintf, 2, (FILE*, const wxFormatString&),
- wxCRT_FprintfNative, wxCRT_FprintfA)
+
+WX_DEFINE_VARARG_FUNC_SANS_N0(int, wxPrintf, 1, (const wxFormatString&),
+ wxCRT_PrintfNative, wxCRT_PrintfA)
+inline int wxPrintf(const wxFormatString& s)
+{
+ return wxPrintf("%s", s.InputAsString());
+}
+
+WX_DEFINE_VARARG_FUNC_SANS_N0(int, wxFprintf, 2, (FILE*, const wxFormatString&),
+ wxCRT_FprintfNative, wxCRT_FprintfA)
+inline int wxFprintf(FILE *f, const wxFormatString& s)
+{
+ return wxFprintf(f, "%s", s.InputAsString());
+}
// va_list versions of printf functions simply forward to the respective
// CRT function; note that they assume that va_list was created using
}
#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)
}
#endif // wxUSE_UNICODE && !wxUSE_UTF8_LOCALE_ONLY
+wxString wxFormatString::InputAsString() const
+{
+ if ( m_str )
+ return *m_str;
+ if ( m_cstr )
+ return m_cstr->AsString();
+ if ( m_wchar )
+ return wxString(m_wchar);
+ if ( m_char )
+ return wxString(m_char);
+
+ wxFAIL_MSG( "invalid wxFormatString - not initialized?" );
+ return wxString();
+}
+
// ----------------------------------------------------------------------------
// wxFormatString::GetArgumentType()
// ----------------------------------------------------------------------------