]> git.saurik.com Git - wxWidgets.git/commitdiff
fixed vararg functions with format argument to not use wxString or reference argument...
authorVáclav Slavík <vslavik@fastmail.fm>
Thu, 3 May 2007 10:50:25 +0000 (10:50 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Thu, 3 May 2007 10:50:25 +0000 (10:50 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45781 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

14 files changed:
include/wx/generic/dcpsg.h
include/wx/log.h
include/wx/mimetype.h
include/wx/msgout.h
include/wx/string.h
include/wx/strvararg.h
include/wx/wxcrtvararg.h
src/common/log.cpp
src/common/mimecmn.cpp
src/common/msgout.cpp
src/common/string.cpp
src/common/wxcrt.cpp
src/generic/dcpsg.cpp
src/generic/logg.cpp

index 2d6fa5955a8ebd29bd1c4fb60b6838fbb839da10..d8e44192df2773e858d8e2aad12ebeb1ce63ca26 100644 (file)
@@ -95,17 +95,26 @@ public:
     static void SetResolution(int ppi);
     static int GetResolution();
 
-    WX_DEFINE_VARARG_FUNC_VOID(PsPrintf, 1, (const wxString&), DoPsPrintfFormat)
+    WX_DEFINE_VARARG_FUNC_VOID(PsPrintf, 1, (const wxString&),
+                               DoPsPrintfFormatWchar, DoPsPrintfFormatUtf8)
 #ifdef __WATCOMC__
     // workaround for http://bugzilla.openwatcom.org/show_bug.cgi?id=351
-    WX_DEFINE_VARARG_FUNC_VOID(PsPrintf, 1, (const char*), DoPsPrintfFormat)
-    WX_DEFINE_VARARG_FUNC_VOID(PsPrintf, 1, (const wchar_t*), DoPsPrintfFormat)
+    WX_DEFINE_VARARG_FUNC_VOID(PsPrintf, 1, (const char*),
+                               DoPsPrintfFormatWchar, DoPsPrintfFormatUtf8)
+    WX_DEFINE_VARARG_FUNC_VOID(PsPrintf, 1, (const wchar_t*),
+                               DoPsPrintfFormatWchar, DoPsPrintfFormatUtf8)
 #endif
+
     void PsPrint( const wxString& psdata );
     void PsPrint( int ch );
 
 private:
-    void DoPsPrintfFormat(const wxString& fmt, ... );
+#if !wxUSE_UTF8_LOCALE_ONLY
+    void DoPsPrintfFormatWchar(const wxChar *fmt, ... );
+#endif
+#if wxUSE_UNICODE_UTF8
+    void DoPsPrintfFormatUtf8(const char *fmt, ... );
+#endif
 
     static float ms_PSScaleFactor;
 
index c9f16abf15e241481aa4074695d92d7f669174df..f118a2fe29dad53f2247861747a269cc8988af63 100644 (file)
@@ -473,9 +473,12 @@ WXDLLIMPEXP_BASE const wxChar* wxSysErrorMsg(unsigned long nErrCode = 0);
 
 #define DECLARE_LOG_FUNCTION(level)                                         \
     extern void WXDLLIMPEXP_BASE                                            \
-    wxDoLog##level(const wxString& format, ...);                            \
+    wxDoLog##level##Wchar(const wxChar *format, ...);                       \
+    extern void WXDLLIMPEXP_BASE                                            \
+    wxDoLog##level##Utf8(const char *format, ...);                          \
     WX_DEFINE_VARARG_FUNC_VOID(wxLog##level,                                \
-                               1, (const wxString&), wxDoLog##level)        \
+                               1, (const wxString&),                        \
+                               wxDoLog##level##Wchar, wxDoLog##level##Utf8) \
     DECLARE_LOG_FUNCTION_WATCOM(level)                                      \
     extern void WXDLLIMPEXP_BASE wxVLog##level(const wxString& format,      \
                                                va_list argptr)
@@ -486,22 +489,30 @@ WXDLLIMPEXP_BASE const wxChar* wxSysErrorMsg(unsigned long nErrCode = 0);
     // something too big for Borland C++ to handle
     #define DECLARE_LOG_FUNCTION_WATCOM(level)                              \
         WX_DEFINE_VARARG_FUNC_VOID(wxLog##level,                            \
-                                   1, (const char*), wxDoLog##level)        \
+                                   1, (const char*),                        \
+                                   wxDoLog##level##Wchar,                   \
+                                   wxDoLog##level##Utf8)                    \
         WX_DEFINE_VARARG_FUNC_VOID(wxLog##level,                            \
-                                   1, (const wchar_t*), wxDoLog##level)     \
+                                   1, (const wchar_t*),                     \
+                                   wxDoLog##level##Wchar,                   \
+                                   wxDoLog##level##Utf8)                    \
         WX_DEFINE_VARARG_FUNC_VOID(wxLog##level,                            \
-                                   1, (const wxCStrData&), wxDoLog##level)
+                                   1, (const wxCStrData&),                  \
+                                   wxDoLog##level##Wchar,                   \
+                                   wxDoLog##level##Utf8)
 #else
     #define DECLARE_LOG_FUNCTION_WATCOM(level)
 #endif
 
 
 #define DECLARE_LOG_FUNCTION2_EXP(level, argclass, arg, expdecl)            \
-    extern void expdecl wxDoLog##level(argclass arg,                        \
-                                       const wxString& format, ...);        \
+    extern void expdecl wxDoLog##level##Wchar(argclass arg,                 \
+                                              const wxChar *format, ...);   \
+    extern void expdecl wxDoLog##level##Utf8(argclass arg,                  \
+                                             const char *format, ...);      \
     WX_DEFINE_VARARG_FUNC_VOID(wxLog##level,                                \
                                2, (argclass, const wxString&),              \
-                               wxDoLog##level)                              \
+                               wxDoLog##level##Wchar, wxDoLog##level##Utf8) \
     DECLARE_LOG_FUNCTION2_EXP_WATCOM(level, argclass, arg, expdecl)         \
     extern void expdecl wxVLog##level(argclass arg,                         \
                                       const wxString& format,               \
@@ -514,13 +525,16 @@ WXDLLIMPEXP_BASE const wxChar* wxSysErrorMsg(unsigned long nErrCode = 0);
     #define DECLARE_LOG_FUNCTION2_EXP_WATCOM(level, argclass, arg, expdecl) \
         WX_DEFINE_VARARG_FUNC_VOID(wxLog##level,                            \
                                    2, (argclass, const char*),              \
-                                   wxDoLog##level)                          \
+                                   wxDoLog##level##Wchar,                   \
+                                   wxDoLog##level##Utf8)                    \
         WX_DEFINE_VARARG_FUNC_VOID(wxLog##level,                            \
                                    2, (argclass, const wchar_t*),           \
-                                   wxDoLog##level)                          \
+                                   wxDoLog##level##Wchar,                   \
+                                   wxDoLog##level##Utf8)                    \
         WX_DEFINE_VARARG_FUNC_VOID(wxLog##level,                            \
                                    2, (argclass, const wxCStrData&),        \
-                                   wxDoLog##level)
+                                   wxDoLog##level##Wchar,                   \
+                                   wxDoLog##level##Utf8)
 #else
     #define DECLARE_LOG_FUNCTION2_EXP_WATCOM(level, argclass, arg, expdecl)
 #endif
index 2a38d413ca25f868dedff8fa841cbd76c5889049..7c3fff5c463262bdd9a8bf47dc55e4fb0e38ca85 100644 (file)
@@ -26,6 +26,8 @@
 #include "wx/dynarray.h"
 #include "wx/arrstr.h"
 
+#include <stdarg.h>
+
 // fwd decls
 class WXDLLIMPEXP_BASE wxIconLocation;
 class WXDLLIMPEXP_BASE wxFileTypeImpl;
@@ -117,13 +119,30 @@ private:
 class WXDLLIMPEXP_BASE wxFileTypeInfo
 {
 private:
-    void VarArgInit(const wxString& mimeType,
-                    const wxString& openCmd,
-                    const wxString& printCmd,
-                    const wxString& desc,
-                    // the other parameters form a NULL terminated list of
-                    // extensions
-                    ...);
+    void DoVarArgInit(const wxString& mimeType,
+                      const wxString& openCmd,
+                      const wxString& printCmd,
+                      const wxString& desc,
+                      va_list argptr);
+
+#if !wxUSE_UTF8_LOCALE_ONLY
+    void VarArgInitWchar(const wxChar *mimeType,
+                         const wxChar *openCmd,
+                         const wxChar *printCmd,
+                         const wxChar *desc,
+                         // the other parameters form a NULL terminated list of
+                         // 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:
     // ctors
         // a normal item
@@ -138,21 +157,21 @@ public:
     WX_DEFINE_VARARG_FUNC_CTOR(wxFileTypeInfo,
                                4, (const wxString&, const wxString&,
                                    const wxString&, const wxString&),
-                               VarArgInit)
+                               VarArgInitWchar, VarArgInitUtf8)
 #ifdef __WATCOMC__
     // workaround for http://bugzilla.openwatcom.org/show_bug.cgi?id=351
     WX_DEFINE_VARARG_FUNC_CTOR(wxFileTypeInfo,
                                4, (const char*, const char*,
                                    const char*, const char*),
-                               VarArgInit)
+                               VarArgInitWchar, VarArgInitUtf8)
     WX_DEFINE_VARARG_FUNC_CTOR(wxFileTypeInfo,
                                4, (const wchar_t*, const wchar_t*,
                                    const wchar_t*, const wchar_t*),
-                               VarArgInit)
+                               VarArgInitWchar, VarArgInitUtf8)
     WX_DEFINE_VARARG_FUNC_CTOR(wxFileTypeInfo,
                                4, (const wxCStrData&, const wxCStrData&,
                                    const wxCStrData&, const wxCStrData&),
-                               VarArgInit)
+                               VarArgInitWchar, VarArgInitUtf8)
 #endif
 
         // the array elements correspond to the parameters of the ctor above in
index f48232752a26c89a84594b49184e41d9e4faba4a..24b74500912b9574669d2492c32ad5e5eb7ef292 100755 (executable)
@@ -37,18 +37,27 @@ public:
 
     // show a message to the user
     // void Printf(const wxString& format, ...) = 0;
-    WX_DEFINE_VARARG_FUNC_VOID(Printf, 1, (const wxString&), DoPrintf)
+    WX_DEFINE_VARARG_FUNC_VOID(Printf, 1, (const wxString&),
+                               DoPrintfWchar, DoPrintfUtf8)
 #ifdef __WATCOMC__
     // workaround for http://bugzilla.openwatcom.org/show_bug.cgi?id=351
-    WX_DEFINE_VARARG_FUNC_VOID(Printf, 1, (const char*), DoPrintf)
-    WX_DEFINE_VARARG_FUNC_VOID(Printf, 1, (const wchar_t*), DoPrintf)
-    WX_DEFINE_VARARG_FUNC_VOID(Printf, 1, (const wxCStrData&), DoPrintf)
+    WX_DEFINE_VARARG_FUNC_VOID(Printf, 1, (const char*),
+                               DoPrintfWchar, DoPrintfUtf8)
+    WX_DEFINE_VARARG_FUNC_VOID(Printf, 1, (const wchar_t*),
+                               DoPrintfWchar, DoPrintfUtf8)
+    WX_DEFINE_VARARG_FUNC_VOID(Printf, 1, (const wxCStrData&),
+                               DoPrintfWchar, DoPrintfUtf8)
 #endif
 
 protected:
     // NB: this is pure virtual so that it can be implemented in dllexported
     //     wxMessagOutput class
-    virtual void DoPrintf(const wxString& format, ...) = 0;
+#if !wxUSE_UTF8_LOCALE_ONLY
+    virtual void DoPrintfWchar(const wxChar *format, ...) = 0;
+#endif
+#if wxUSE_UNICODE_UTF8
+    virtual void DoPrintfUtf8(const char *format, ...) = 0;
+#endif
 
     // called by DoPrintf() to output formatted string
     virtual void Output(const wxString& str) = 0;
@@ -73,7 +82,12 @@ public:
     static wxMessageOutput* Set(wxMessageOutput* msgout);
 
 protected:
-    virtual void DoPrintf(const wxString& format, ...);
+#if !wxUSE_UTF8_LOCALE_ONLY
+    virtual void DoPrintfWchar(const wxChar *format, ...);
+#endif
+#if wxUSE_UNICODE_UTF8
+    virtual void DoPrintfUtf8(const char *format, ...);
+#endif
     virtual void Output(const wxString& str) = 0;
 
 private:
index c81e68b396b1fc57cc1ebc2fbf9b0b4012c75e96..346316a4928fe647a55f002f30f5bda8d69b1421 100644 (file)
@@ -297,8 +297,14 @@ class WXDLLIMPEXP_BASE wxStringPrintfMixinBase
 protected:
     wxStringPrintfMixinBase() {}
 
-    int DoPrintf(const wxString& format, ...);
-    static wxString DoFormat(const wxString& format, ...);
+#if !wxUSE_UTF8_LOCALE_ONLY
+    int DoPrintfWchar(const wxChar *format, ...);
+    static wxString DoFormatWchar(const wxChar *format, ...);
+#endif
+#if wxUSE_UNICODE_UTF8
+    int DoPrintfUtf8(const char *format, ...);
+    static wxString DoFormatUtf8(const char *format, ...);
+#endif
 };
 
 // this class contains template wrappers for wxString's vararg methods, it's
@@ -322,9 +328,9 @@ public:
     // if !wxNEEDS_WXSTRING_PRINTF_MIXIN:
 
     // static wxString Format(const wString& format, ...) ATTRIBUTE_PRINTF_1;
-    WX_DEFINE_VARARG_FUNC2_SANS_N0(static typename StringReturnType<T1>::type,
-                                   Format, 1, (const wxString&),
-                                   DoFormat, DoFormat)
+    WX_DEFINE_VARARG_FUNC_SANS_N0(static typename StringReturnType<T1>::type,
+                                  Format, 1, (const wxString&),
+                                  DoFormatWchar, DoFormatUtf8)
     // We have to implement the version without template arguments manually
     // because of the StringReturnType<> hack, although WX_DEFINE_VARARG_FUNC
     // normally does it itself. It has to be a template so that we can use
@@ -339,9 +345,11 @@ public:
     }
 
     // int Printf(const wxString& format, ...);
-    WX_DEFINE_VARARG_FUNC(int, Printf, 1, (const wxString&), DoPrintf)
+    WX_DEFINE_VARARG_FUNC(int, Printf, 1, (const wxString&),
+                          DoPrintfWchar, DoPrintfUtf8)
     // int sprintf(const wxString& format, ...) ATTRIBUTE_PRINTF_2;
-    WX_DEFINE_VARARG_FUNC(int, sprintf, 1, (const wxString&), DoPrintf)
+    WX_DEFINE_VARARG_FUNC(int, sprintf, 1, (const wxString&),
+                          DoPrintfWchar, DoPrintfUtf8)
 
 protected:
     wxStringPrintfMixin() : wxStringPrintfMixinBase() {}
@@ -1533,11 +1541,15 @@ public:
     // as sprintf(), returns the number of characters written or < 0 on error
     // (take 'this' into account in attribute parameter count)
   // int Printf(const wxString& format, ...);
-  WX_DEFINE_VARARG_FUNC(int, Printf, 1, (const wxString&), DoPrintf)
+  WX_DEFINE_VARARG_FUNC(int, Printf, 1, (const wxString&),
+                        DoPrintfWchar, DoPrintfUtf8)
 #ifdef __WATCOMC__
-  WX_DEFINE_VARARG_FUNC(int, Printf, 1, (const char*), DoPrintf)
-  WX_DEFINE_VARARG_FUNC(int, Printf, 1, (const wchar_t*), DoPrintf)
-  WX_DEFINE_VARARG_FUNC(int, Printf, 1, (const wxCStrData&), DoPrintf)
+  WX_DEFINE_VARARG_FUNC(int, Printf, 1, (const char*)
+                        DoPrintfWchar, DoPrintfUtf8)
+  WX_DEFINE_VARARG_FUNC(int, Printf, 1, (const wchar_t*)
+                        DoPrintfWchar, DoPrintfUtf8)
+  WX_DEFINE_VARARG_FUNC(int, Printf, 1, (const wxCStrData&)
+                        DoPrintfWchar, DoPrintfUtf8)
 #endif
 #endif // !wxNEEDS_WXSTRING_PRINTF_MIXIN
     // as vprintf(), returns the number of characters written or < 0 on error
@@ -1546,12 +1558,16 @@ public:
 #ifndef wxNEEDS_WXSTRING_PRINTF_MIXIN
     // returns the string containing the result of Printf() to it
   // static wxString Format(const wxString& format, ...) ATTRIBUTE_PRINTF_1;
-  WX_DEFINE_VARARG_FUNC(static wxString, Format, 1, (const wxString&), DoFormat)
+  WX_DEFINE_VARARG_FUNC(static wxString, Format, 1, (const wxString&),
+                        DoFormatWchar, DoFormatUtf8)
 #ifdef __WATCOMC__
   // workaround for http://bugzilla.openwatcom.org/show_bug.cgi?id=351
-  WX_DEFINE_VARARG_FUNC(static wxString, Format, 1, (const char*), DoFormat)
-  WX_DEFINE_VARARG_FUNC(static wxString, Format, 1, (const wchar_t*), DoFormat)
-  WX_DEFINE_VARARG_FUNC(static wxString, Format, 1, (const wxCStrData&), DoFormat)
+  WX_DEFINE_VARARG_FUNC(static wxString, Format, 1, (const char*),
+                        DoFormatWchar, DoFormatUtf8)
+  WX_DEFINE_VARARG_FUNC(static wxString, Format, 1, (const wchar_t*),
+                        DoFormatWchar, DoFormatUtf8)
+  WX_DEFINE_VARARG_FUNC(static wxString, Format, 1, (const wxCStrData&),
+                        DoFormatWchar, DoFormatUtf8)
 #endif
 #endif
     // the same as above, but takes a va_list
@@ -1589,12 +1605,16 @@ public:
   // use Printf()
   // (take 'this' into account in attribute parameter count)
   // int sprintf(const wxString& format, ...) ATTRIBUTE_PRINTF_2;
-  WX_DEFINE_VARARG_FUNC(int, sprintf, 1, (const wxString&), DoPrintf)
+  WX_DEFINE_VARARG_FUNC(int, sprintf, 1, (const wxString&),
+                        DoPrintfWchar, DoPrintfUtf8)
 #ifdef __WATCOMC__
   // workaround for http://bugzilla.openwatcom.org/show_bug.cgi?id=351
-  WX_DEFINE_VARARG_FUNC(int, sprintf, 1, (const char*), DoPrintf)
-  WX_DEFINE_VARARG_FUNC(int, sprintf, 1, (const wchar_t*), DoPrintf)
-  WX_DEFINE_VARARG_FUNC(int, sprintf, 1, (const wxCStrData&), DoPrintf)
+  WX_DEFINE_VARARG_FUNC(int, sprintf, 1, (const char*),
+                        DoPrintfWchar, DoPrintfUtf8)
+  WX_DEFINE_VARARG_FUNC(int, sprintf, 1, (const wchar_t*),
+                        DoPrintfWchar, DoPrintfUtf8)
+  WX_DEFINE_VARARG_FUNC(int, sprintf, 1, (const wxCStrData&),
+                        DoPrintfWchar, DoPrintfUtf8)
 #endif
 #endif // wxNEEDS_WXSTRING_PRINTF_MIXIN
 
@@ -2369,8 +2389,14 @@ private:
 #endif // !wxUSE_STL_BASED_WXSTRING
 
 #ifndef wxNEEDS_WXSTRING_PRINTF_MIXIN
-  int DoPrintf(const wxString& format, ...);
-  static wxString DoFormat(const wxString& format, ...);
+  #if !wxUSE_UTF8_LOCALE_ONLY
+  int DoPrintfWchar(const wxChar *format, ...);
+  static wxString DoFormatWchar(const wxChar *format, ...);
+  #endif
+  #if wxUSE_UNICODE_UTF8
+  int DoPrintfUtf8(const char *format, ...);
+  static wxString DoFormatUtf8(const char *format, ...);
+  #endif
 #endif
 
 #if !wxUSE_STL_BASED_WXSTRING
index 7c523e892d24b2de0eb844b4c7cd8a0c23958979..16273f47a66b3a8aa858d77d7bbeac2b0b004717 100644 (file)
@@ -70,33 +70,25 @@ class WXDLLIMPEXP_BASE wxString;
 //                  if wxUSE_UNICODE_UTF8 and running under UTF-8 locale
 //                  (ignored otherwise)  [fprintf]
 //
-#define WX_DEFINE_VARARG_FUNC2(rettype, name, numfixed, fixed, impl, implUtf8)\
+#define WX_DEFINE_VARARG_FUNC(rettype, name, numfixed, fixed, impl, implUtf8) \
     _WX_VARARG_DEFINE_FUNC_N0(rettype, name, impl, implUtf8, numfixed, fixed) \
-    WX_DEFINE_VARARG_FUNC2_SANS_N0(rettype, name, numfixed, fixed, impl, implUtf8)
+    WX_DEFINE_VARARG_FUNC_SANS_N0(rettype, name, numfixed, fixed, impl, implUtf8)
 
 // ditto, but without the version with 0 template/vararg arguments
-#define WX_DEFINE_VARARG_FUNC2_SANS_N0(rettype, name,                         \
+#define WX_DEFINE_VARARG_FUNC_SANS_N0(rettype, name,                          \
                                        numfixed, fixed, impl, implUtf8)       \
     _WX_VARARG_ITER(_WX_VARARG_MAX_ARGS,                                      \
                     _WX_VARARG_DEFINE_FUNC,                                   \
                     rettype, name, impl, implUtf8, numfixed, fixed)
 
-// like WX_DEFINE_VARARG_FUNC2, but for impl=implUtf8:
-#define WX_DEFINE_VARARG_FUNC(rettype, name, numfixed, fixed, impl)           \
-    WX_DEFINE_VARARG_FUNC2(rettype, name, numfixed, fixed, impl, impl)
-
-// Like WX_DEFINE_VARARG_FUNC2, but for variadic functions that don't return
+// Like WX_DEFINE_VARARG_FUNC, but for variadic functions that don't return
 // a value.
-#define WX_DEFINE_VARARG_FUNC_VOID2(name, numfixed, fixed, impl, implUtf8)    \
+#define WX_DEFINE_VARARG_FUNC_VOID(name, numfixed, fixed, impl, implUtf8)     \
     _WX_VARARG_DEFINE_FUNC_VOID_N0(name, impl, implUtf8, numfixed, fixed)     \
     _WX_VARARG_ITER(_WX_VARARG_MAX_ARGS,                                      \
                     _WX_VARARG_DEFINE_FUNC_VOID,                              \
                     void, name, impl, implUtf8, numfixed, fixed)
 
-// like WX_DEFINE_VARARG_FUNC_VOID2, but for impl=implUtf8:
-#define WX_DEFINE_VARARG_FUNC_VOID(name, numfixed, fixed, impl)               \
-    WX_DEFINE_VARARG_FUNC_VOID2(name, numfixed, fixed, impl, impl)
-
 // Like WX_DEFINE_VARARG_FUNC_VOID, but instead of wrapping an implementation
 // function, does nothing in defined functions' bodies.
 //
@@ -108,11 +100,11 @@ class WXDLLIMPEXP_BASE wxString;
                         void, name, dummy, dummy, numfixed, fixed)
 
 // Like WX_DEFINE_VARARG_FUNC_CTOR, but for defining template constructors
-#define WX_DEFINE_VARARG_FUNC_CTOR(name, numfixed, fixed, impl)               \
-    _WX_VARARG_DEFINE_FUNC_CTOR_N0(name, impl, impl, numfixed, fixed)         \
+#define WX_DEFINE_VARARG_FUNC_CTOR(name, numfixed, fixed, impl, implUtf8)     \
+    _WX_VARARG_DEFINE_FUNC_CTOR_N0(name, impl, implUtf8, numfixed, fixed)     \
     _WX_VARARG_ITER(_WX_VARARG_MAX_ARGS,                                      \
                     _WX_VARARG_DEFINE_FUNC_CTOR,                              \
-                    void, name, impl, impl, numfixed, fixed)
+                    void, name, impl, implUtf8, numfixed, fixed)
 
 // ----------------------------------------------------------------------------
 // wxArgNormalizer*<T> converters
@@ -548,7 +540,7 @@ private:
 #define _WX_VARARG_ARG(i)               T##i a##i
 
 // Like _WX_VARARG_ARG_UNUSED, but outputs argument's type with WXUNUSED:
-#define _WX_VARARG_ARG_UNUSED(i)             T##i WXUNUSED(a##i)
+#define _WX_VARARG_ARG_UNUSED(i)        T##i WXUNUSED(a##i)
 
 // Generates code snippet for i-th type in vararg function's template<...>:
 #define _WX_VARARG_TEMPL(i)             typename T##i
index 6ddb99ff1cb69cfec89241c4e038256ad93bad2d..c8747eba140888e5f65c6d398c56df6637c8d23f 100644 (file)
 //             we'll also need wxArgNormalizer<T> specializations for char,
 //             wchar_t, wxUniChar and wxUniCharRef to handle this correctly
 
-WX_DEFINE_VARARG_FUNC2(int, wxPrintf, 1, (const wxString&),
-                       wxCRT_Printf, printf)
-WX_DEFINE_VARARG_FUNC2(int, wxFprintf, 2, (FILE*, const wxString&),
-                       wxCRT_Fprintf, fprintf)
+WX_DEFINE_VARARG_FUNC(int, wxPrintf, 1, (const wxString&),
+                      wxCRT_Printf, printf)
+WX_DEFINE_VARARG_FUNC(int, wxFprintf, 2, (FILE*, const wxString&),
+                      wxCRT_Fprintf, fprintf)
 
 // va_list versions of printf functions simply forward to the respective
 // CRT function; note that they assume that va_list was created using
@@ -299,34 +299,56 @@ wxVfprintf(FILE *f, const wxString& format, va_list ap)
 // wxSprintf() and friends have to be implemented in two forms, one for
 // writing to char* buffer and one for writing to wchar_t*:
 
-int WXDLLIMPEXP_BASE wxDoSprintf(char *str, const wxString& format, ...);
+#if !wxUSE_UTF8_LOCALE_ONLY
+int WXDLLIMPEXP_BASE wxDoSprintfWchar(char *str, const wxChar *format, ...);
+#endif
+#if wxUSE_UNICODE_UTF8
+int WXDLLIMPEXP_BASE wxDoSprintfUtf8(char *str, const char *format, ...);
+#endif
 WX_DEFINE_VARARG_FUNC(int, wxSprintf, 2, (char*, const wxString&),
-                      wxDoSprintf)
+                      wxDoSprintfWchar, wxDoSprintfUtf8)
 
 int WXDLLIMPEXP_BASE
 wxVsprintf(char *str, const wxString& format, va_list argptr);
 
-int WXDLLIMPEXP_BASE wxDoSnprintf(char *str, size_t size, const wxString& format, ...);
+#if !wxUSE_UTF8_LOCALE_ONLY
+int WXDLLIMPEXP_BASE wxDoSnprintfWchar(char *str, size_t size, const wxChar *format, ...);
+#endif
+#if wxUSE_UNICODE_UTF8
+int WXDLLIMPEXP_BASE wxDoSnprintfUtf8(char *str, size_t size, const char *format, ...);
+#endif
 WX_DEFINE_VARARG_FUNC(int, wxSnprintf, 3, (char*, size_t, const wxString&),
-                      wxDoSnprintf)
+                      wxDoSnprintfWchar, wxDoSnprintfUtf8)
 
 int WXDLLIMPEXP_BASE
 wxVsnprintf(char *str, size_t size, const wxString& format, va_list argptr);
 
 #if wxUSE_UNICODE
-int WXDLLIMPEXP_BASE wxDoSprintf(wchar_t *str, const wxString& format, ...);
+
+#if !wxUSE_UTF8_LOCALE_ONLY
+int WXDLLIMPEXP_BASE wxDoSprintfWchar(wchar_t *str, const wxChar *format, ...);
+#endif
+#if wxUSE_UNICODE_UTF8
+int WXDLLIMPEXP_BASE wxDoSprintfUtf8(wchar_t *str, const char *format, ...);
+#endif
 WX_DEFINE_VARARG_FUNC(int, wxSprintf, 2, (wchar_t*, const wxString&),
-                      wxDoSprintf)
+                      wxDoSprintfWchar, wxDoSprintfUtf8)
 
 int WXDLLIMPEXP_BASE
 wxVsprintf(wchar_t *str, const wxString& format, va_list argptr);
 
-int WXDLLIMPEXP_BASE wxDoSnprintf(wchar_t *str, size_t size, const wxString& format, ...);
+#if !wxUSE_UTF8_LOCALE_ONLY
+int WXDLLIMPEXP_BASE wxDoSnprintfWchar(wchar_t *str, size_t size, const wxChar *format, ...);
+#endif
+#if wxUSE_UNICODE_UTF8
+int WXDLLIMPEXP_BASE wxDoSnprintfUtf8(wchar_t *str, size_t size, const char *format, ...);
+#endif
 WX_DEFINE_VARARG_FUNC(int, wxSnprintf, 3, (wchar_t*, size_t, const wxString&),
-                      wxDoSnprintf)
+                      wxDoSnprintfWchar, wxDoSnprintfUtf8)
 
 int WXDLLIMPEXP_BASE
 wxVsnprintf(wchar_t *str, size_t size, const wxString& format, va_list argptr);
+
 #endif // wxUSE_UNICODE
 
 #ifdef __WATCOMC__
index 1e03c06a06f7a1020c3411df62ff7f9e2cd60263..28ebbaa0cd44602dab5e96e81afd6a7011b7da7d 100644 (file)
@@ -91,13 +91,51 @@ void wxVLogGeneric(wxLogLevel level, const wxString& format, va_list argptr)
     }
 }
 
-void wxDoLogGeneric(wxLogLevel level, const wxString& format, ...)
+#if !wxUSE_UTF8_LOCALE_ONLY
+void wxDoLogGenericWchar(wxLogLevel level, const wxChar *format, ...)
 {
     va_list argptr;
     va_start(argptr, format);
     wxVLogGeneric(level, format, argptr);
     va_end(argptr);
 }
+#endif // wxUSE_UTF8_LOCALE_ONLY
+
+#if wxUSE_UNICODE_UTF8
+void wxDoLogGenericUtf8(wxLogLevel level, const char *format, ...)
+{
+    va_list argptr;
+    va_start(argptr, format);
+    wxVLogGeneric(level, format, argptr);
+    va_end(argptr);
+}
+#endif // wxUSE_UNICODE_UTF8
+
+#if !wxUSE_UTF8_LOCALE_ONLY
+    #define IMPLEMENT_LOG_FUNCTION_WCHAR(level)                         \
+      void wxDoLog##level##Wchar(const wxChar *format, ...)             \
+      {                                                                 \
+        va_list argptr;                                                 \
+        va_start(argptr, format);                                       \
+        wxVLog##level(format, argptr);                                  \
+        va_end(argptr);                                                 \
+      }
+#else
+    #define IMPLEMENT_LOG_FUNCTION_WCHAR(level)
+#endif
+
+#if wxUSE_UNICODE_UTF8
+    #define IMPLEMENT_LOG_FUNCTION_UTF8(level)                          \
+      void wxDoLog##level##Utf8(const char *format, ...)                \
+      {                                                                 \
+        va_list argptr;                                                 \
+        va_start(argptr, format);                                       \
+        wxVLog##level(format, argptr);                                  \
+        va_end(argptr);                                                 \
+      }
+#else
+    #define IMPLEMENT_LOG_FUNCTION_UTF8(level)
+#endif
 
 #define IMPLEMENT_LOG_FUNCTION(level)                               \
   void wxVLog##level(const wxString& format, va_list argptr)        \
@@ -107,14 +145,8 @@ void wxDoLogGeneric(wxLogLevel level, const wxString& format, ...)
                    wxString::FormatV(format, argptr), time(NULL));  \
     }                                                               \
   }                                                                 \
-                                                                    \
-  void wxDoLog##level(const wxString& format, ...)                  \
-  {                                                                 \
-    va_list argptr;                                                 \
-    va_start(argptr, format);                                       \
-    wxVLog##level(format, argptr);                                  \
-    va_end(argptr);                                                 \
-  }
+  IMPLEMENT_LOG_FUNCTION_WCHAR(level)                               \
+  IMPLEMENT_LOG_FUNCTION_UTF8(level)
 
 IMPLEMENT_LOG_FUNCTION(Error)
 IMPLEMENT_LOG_FUNCTION(Warning)
@@ -145,7 +177,8 @@ void wxVLogFatalError(const wxString& format, va_list argptr)
 #endif
 }
 
-void wxDoLogFatalError(const wxString& format, ...)
+#if !wxUSE_UTF8_LOCALE_ONLY
+void wxDoLogFatalErrorWchar(const wxChar *format, ...)
 {
     va_list argptr;
     va_start(argptr, format);
@@ -155,6 +188,20 @@ void wxDoLogFatalError(const wxString& format, ...)
     // for the others anyhow...
     //va_end(argptr);
 }
+#endif // wxUSE_UTF8_LOCALE_ONLY
+
+#if wxUSE_UNICODE_UTF8
+void wxDoLogFatalErrorUtf8(const char *format, ...)
+{
+    va_list argptr;
+    va_start(argptr, format);
+    wxVLogFatalError(format, argptr);
+
+    // some compilers warn about unreachable code and it shouldn't matter
+    // for the others anyhow...
+    //va_end(argptr);
+}
+#endif // wxUSE_UNICODE_UTF8
 
 // same as info, but only if 'verbose' mode is on
 void wxVLogVerbose(const wxString& format, va_list argptr)
@@ -167,16 +214,55 @@ void wxVLogVerbose(const wxString& format, va_list argptr)
     }
 }
 
-void wxDoLogVerbose(const wxString& format, ...)
+#if !wxUSE_UTF8_LOCALE_ONLY
+void wxDoLogVerboseWchar(const wxChar *format, ...)
 {
     va_list argptr;
     va_start(argptr, format);
     wxVLogVerbose(format, argptr);
     va_end(argptr);
 }
+#endif // !wxUSE_UTF8_LOCALE_ONLY
+
+#if wxUSE_UNICODE_UTF8
+void wxDoLogVerboseUtf8(const char *format, ...)
+{
+    va_list argptr;
+    va_start(argptr, format);
+    wxVLogVerbose(format, argptr);
+    va_end(argptr);
+}
+#endif // wxUSE_UNICODE_UTF8
 
 // debug functions
 #ifdef __WXDEBUG__
+
+#if !wxUSE_UTF8_LOCALE_ONLY
+    #define IMPLEMENT_LOG_DEBUG_FUNCTION_WCHAR(level)                   \
+      void wxDoLog##level##Wchar(const wxChar *format, ...)             \
+      {                                                                 \
+        va_list argptr;                                                 \
+        va_start(argptr, format);                                       \
+        wxVLog##level(format, argptr);                                  \
+        va_end(argptr);                                                 \
+      }
+#else
+    #define IMPLEMENT_LOG_DEBUG_FUNCTION_WCHAR(level)
+#endif
+
+#if wxUSE_UNICODE_UTF8
+    #define IMPLEMENT_LOG_DEBUG_FUNCTION_UTF8(level)                    \
+      void wxDoLog##level##Utf8(const char *format, ...)                \
+      {                                                                 \
+        va_list argptr;                                                 \
+        va_start(argptr, format);                                       \
+        wxVLog##level(format, argptr);                                  \
+        va_end(argptr);                                                 \
+      }
+#else
+    #define IMPLEMENT_LOG_DEBUG_FUNCTION_UTF8(level)
+#endif
+
 #define IMPLEMENT_LOG_DEBUG_FUNCTION(level)                         \
   void wxVLog##level(const wxString& format, va_list argptr)        \
   {                                                                 \
@@ -185,14 +271,9 @@ void wxDoLogVerbose(const wxString& format, ...)
                    wxString::FormatV(format, argptr), time(NULL));  \
     }                                                               \
   }                                                                 \
-                                                                    \
-  void wxDoLog##level(const wxString& format, ...)                  \
-  {                                                                 \
-    va_list argptr;                                                 \
-    va_start(argptr, format);                                       \
-    wxVLog##level(format, argptr);                                  \
-    va_end(argptr);                                                 \
-  }
+  IMPLEMENT_LOG_DEBUG_FUNCTION_WCHAR(level)                         \
+  IMPLEMENT_LOG_DEBUG_FUNCTION_UTF8(level)
+
 
   void wxVLogTrace(const wxString& mask, const wxString& format, va_list argptr)
   {
@@ -204,13 +285,25 @@ void wxDoLogVerbose(const wxString& format, ...)
     }
   }
 
-  void wxDoLogTrace(const wxString& mask, const wxString& format, ...)
+#if !wxUSE_UTF8_LOCALE_ONLY
+  void wxDoLogTraceWchar(const wxString& mask, const wxChar *format, ...)
   {
     va_list argptr;
     va_start(argptr, format);
     wxVLogTrace(mask, format, argptr);
     va_end(argptr);
   }
+#endif // !wxUSE_UTF8_LOCALE_ONLY
+
+#if wxUSE_UNICODE_UTF8
+  void wxDoLogTraceUtf8(const wxString& mask, const char *format, ...)
+  {
+    va_list argptr;
+    va_start(argptr, format);
+    wxVLogTrace(mask, format, argptr);
+    va_end(argptr);
+  }
+#endif // wxUSE_UNICODE_UTF8
 
   void wxVLogTrace(wxTraceMask mask, const wxString& format, va_list argptr)
   {
@@ -222,17 +315,29 @@ void wxDoLogVerbose(const wxString& format, ...)
     }
   }
 
-  void wxDoLogTrace(wxTraceMask mask, const wxString& format, ...)
+#if wxUSE_UTF8_LOCALE_ONLY
+  void wxDoLogTraceWchar(wxTraceMask mask, const wxChar *format, ...)
+  {
+    va_list argptr;
+    va_start(argptr, format);
+    wxVLogTrace(mask, format, argptr);
+    va_end(argptr);
+  }
+#endif // wxUSE_UTF8_LOCALE_ONLY
+
+#if wxUSE_UNICODE_UTF8
+  void wxDoLogTraceUtf8(wxTraceMask mask, const char *format, ...)
   {
     va_list argptr;
     va_start(argptr, format);
     wxVLogTrace(mask, format, argptr);
     va_end(argptr);
   }
+#endif // wxUSE_UNICODE_UTF8
 
 #ifdef __WATCOMC__
   // workaround for http://bugzilla.openwatcom.org/show_bug.cgi?id=351
-  void wxDoLogTrace(int mask, const wxString& format, ...)
+  void wxDoLogTrace(int mask, const wxChar *format, ...)
   {
     va_list argptr;
     va_start(argptr, format);
@@ -240,7 +345,7 @@ void wxDoLogVerbose(const wxString& format, ...)
     va_end(argptr);
   }
 
-  void wxDoLogTrace(const char *mask, const wxString& format, ...)
+  void wxDoLogTrace(const char *mask, const wxChar *format, ...)
   {
     va_list argptr;
     va_start(argptr, format);
@@ -248,7 +353,7 @@ void wxDoLogVerbose(const wxString& format, ...)
     va_end(argptr);
   }
 
-  void wxDoLogTrace(const wchar_t *mask, const wxString& format, ...)
+  void wxDoLogTrace(const wchar_t *mask, const wxChar *format, ...)
   {
     va_list argptr;
     va_start(argptr, format);
@@ -285,13 +390,25 @@ void WXDLLEXPORT wxVLogSysError(const wxString& format, va_list argptr)
     wxVLogSysError(wxSysErrorCode(), format, argptr);
 }
 
-void WXDLLEXPORT wxDoLogSysError(const wxString& format, ...)
+#if !wxUSE_UTF8_LOCALE_ONLY
+void WXDLLEXPORT wxDoLogSysErrorWchar(const wxChar *format, ...)
 {
     va_list argptr;
     va_start(argptr, format);
     wxVLogSysError(format, argptr);
     va_end(argptr);
 }
+#endif // !wxUSE_UTF8_LOCALE_ONLY
+
+#if wxUSE_UNICODE_UTF8
+void WXDLLEXPORT wxDoLogSysErrorUtf8(const char *format, ...)
+{
+    va_list argptr;
+    va_start(argptr, format);
+    wxVLogSysError(format, argptr);
+    va_end(argptr);
+}
+#endif // wxUSE_UNICODE_UTF8
 
 void WXDLLEXPORT wxVLogSysError(long err, const wxString& format, va_list argptr)
 {
@@ -302,17 +419,29 @@ void WXDLLEXPORT wxVLogSysError(long err, const wxString& format, va_list argptr
     }
 }
 
-void WXDLLEXPORT wxDoLogSysError(long lErrCode, const wxString& format, ...)
+#if !wxUSE_UTF8_LOCALE_ONLY
+void WXDLLEXPORT wxDoLogSysErrorWchar(long lErrCode, const wxChar *format, ...)
+{
+    va_list argptr;
+    va_start(argptr, format);
+    wxVLogSysError(lErrCode, format, argptr);
+    va_end(argptr);
+}
+#endif // !wxUSE_UTF8_LOCALE_ONLY
+
+#if wxUSE_UNICODE_UTF8
+void WXDLLEXPORT wxDoLogSysErrorUtf8(long lErrCode, const char *format, ...)
 {
     va_list argptr;
     va_start(argptr, format);
     wxVLogSysError(lErrCode, format, argptr);
     va_end(argptr);
 }
+#endif // wxUSE_UNICODE_UTF8
 
 #ifdef __WATCOMC__
 // workaround for http://bugzilla.openwatcom.org/show_bug.cgi?id=351
-void WXDLLEXPORT wxDoLogSysError(unsigned long lErrCode, const wxString& format, ...)
+void WXDLLEXPORT wxDoLogSysError(unsigned long lErrCode, const wxChar *format, ...)
 {
     va_list argptr;
     va_start(argptr, format);
@@ -320,7 +449,7 @@ void WXDLLEXPORT wxDoLogSysError(unsigned long lErrCode, const wxString& format,
     va_end(argptr);
 }
 
-void WXDLLEXPORT wxVLogSysError(unsigned long err, const wxString& format, va_list argptr)
+void WXDLLEXPORT wxVLogSysError(unsigned long err, const wxChar *format, va_list argptr)
     { wxVLogSysError((long)err, format, argptr); }
 #endif // __WATCOMC__
 
index 1db9b7176cdba07982261324fbeb6f68057bc082..b24cc65838af8047eaaa67860442a70819c938f4 100644 (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)
index ca7f4e1c70182db70b94d8c19bfccc4b5f853b33..5060844865ed9a6c1a0698d17402dc2fbfe2afc1 100755 (executable)
@@ -76,7 +76,8 @@ wxMessageOutput* wxMessageOutput::Set(wxMessageOutput* msgout)
     return old;
 }
 
-void wxMessageOutput::DoPrintf(const wxString& format, ...)
+#if !wxUSE_UTF8_LOCALE_ONLY
+void wxMessageOutput::DoPrintfWchar(const wxChar *format, ...)
 {
     va_list args;
     va_start(args, format);
@@ -87,6 +88,21 @@ void wxMessageOutput::DoPrintf(const wxString& format, ...)
 
     Output(out);
 }
+#endif // !wxUSE_UTF8_LOCALE_ONLY
+
+#if wxUSE_UNICODE_UTF8
+void wxMessageOutput::DoPrintfUtf8(const char *format, ...)
+{
+    va_list args;
+    va_start(args, format);
+    wxString out;
+
+    out.PrintfV(format, args);
+    va_end(args);
+
+    Output(out);
+}
+#endif // wxUSE_UNICODE_UTF8
 
 // ----------------------------------------------------------------------------
 // wxMessageOutputBest
index 717ce0b52c8cd0e754c9e2af7f4387b85464d74f..f9f389cfa209b8a722cd905e2a109f1708a61aa2 100644 (file)
@@ -1447,11 +1447,12 @@ bool wxString::ToDouble(double *val) const
 // formatted output
 // ---------------------------------------------------------------------------
 
+#if !wxUSE_UTF8_LOCALE_ONLY
 /* static */
 #ifdef wxNEEDS_WXSTRING_PRINTF_MIXIN
-wxString wxStringPrintfMixinBase::DoFormat(const wxString& format, ...)
+wxString wxStringPrintfMixinBase::DoFormat(const wxChar *format, ...)
 #else
-wxString wxString::DoFormat(const wxString& format, ...)
+wxString wxString::DoFormatWchar(const wxChar *format, ...)
 #endif
 {
     va_list argptr;
@@ -1464,6 +1465,23 @@ wxString wxString::DoFormat(const wxString& format, ...)
 
     return s;
 }
+#endif // !wxUSE_UTF8_LOCALE_ONLY
+
+#if wxUSE_UNICODE_UTF8
+/* static */
+wxString wxString::DoFormatUtf8(const char *format, ...)
+{
+    va_list argptr;
+    va_start(argptr, format);
+
+    wxString s;
+    s.PrintfV(format, argptr);
+
+    va_end(argptr);
+
+    return s;
+}
+#endif // wxUSE_UNICODE_UTF8
 
 /* static */
 wxString wxString::FormatV(const wxString& format, va_list argptr)
@@ -1473,10 +1491,11 @@ wxString wxString::FormatV(const wxString& format, va_list argptr)
     return s;
 }
 
+#if !wxUSE_UTF8_LOCALE_ONLY
 #ifdef wxNEEDS_WXSTRING_PRINTF_MIXIN
-int wxStringPrintfMixinBase::DoPrintf(const wxString& format, ...)
+int wxStringPrintfMixinBase::DoPrintfWchar(const wxChar *format, ...)
 #else
-int wxString::DoPrintf(const wxString& format, ...)
+int wxString::DoPrintfWchar(const wxChar *format, ...)
 #endif
 {
     va_list argptr;
@@ -1497,6 +1516,21 @@ int wxString::DoPrintf(const wxString& format, ...)
 
     return iLen;
 }
+#endif // !wxUSE_UTF8_LOCALE_ONLY
+
+#if wxUSE_UNICODE_UTF8
+int wxString::DoPrintfUtf8(const char *format, ...)
+{
+    va_list argptr;
+    va_start(argptr, format);
+
+    int iLen = PrintfV(format, argptr);
+
+    va_end(argptr);
+
+    return iLen;
+}
+#endif // wxUSE_UNICODE_UTF8
 
 #if wxUSE_UNICODE_UTF8
 template<typename BufferType>
index 0cbcd5aa24adf4b9b21482c241dd76f4243dc3e3..eb8dcfd14e6a88e2e898058a232fd46f60f3543a 100644 (file)
@@ -606,7 +606,21 @@ int wxCRT_Vsprintf( wxChar *str, 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);
@@ -616,9 +630,12 @@ int wxDoSprintf(char *str, const wxString& 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);
@@ -628,9 +645,38 @@ int wxDoSprintf(wchar_t *str, const wxString& 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);
@@ -640,9 +686,12 @@ int wxDoSnprintf(char *str, size_t size, const wxString& 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);
@@ -652,7 +701,22 @@ int wxDoSnprintf(wchar_t *str, size_t size, const wxString& 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
@@ -660,6 +724,8 @@ int wxDoSnprintf(wchar_t *str, size_t size, const wxString& format, ...)
 #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();
@@ -670,6 +736,7 @@ static int ConvertStringToBuf(const wxString& s, char *out, size_t outsize)
     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)
@@ -681,7 +748,7 @@ 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,
index a157c1c46c5cbdfe514ebf743c4bd4ff4abe736f..4f7be92ace822c41ff2bd2d7de1be9b59eb117c4 100644 (file)
@@ -2228,13 +2228,25 @@ void wxPostScriptDC::DoGetTextExtent(const wxString& string,
 }
 
 // print postscript datas via required method (file, stream)
-void wxPostScriptDC::DoPsPrintfFormat(const wxString& fmt, ...)
+#if !wxUSE_UTF8_LOCALE_ONLY
+void wxPostScriptDC::DoPsPrintfFormatWchar(const wxChar *fmt, ...)
 {
     va_list argptr;
     va_start(argptr, fmt);
 
     PsPrint( wxString::FormatV( fmt, argptr ) );
 }
+#endif // !wxUSE_UTF8_LOCALE_ONLY
+
+#if wxUSE_UNICODE_UTF8
+void wxPostScriptDC::DoPsPrintfFormatUtf8(const char *fmt, ...)
+{
+    va_list argptr;
+    va_start(argptr, fmt);
+
+    PsPrint( wxString::FormatV( fmt, argptr ) );
+}
+#endif // wxUSE_UNICODE_UTF8
 
 void wxPostScriptDC::PsPrint( const wxString& str )
 {
index 6edeb902292743216eeee34a930950a4850e05bb..71580f7fa9d0715863ed9a3d2ab2dc664e9d226d 100644 (file)
@@ -225,13 +225,25 @@ void wxVLogStatus(wxFrame *pFrame, const wxString& format, va_list argptr)
   }
 }
 
-void wxDoLogStatus(wxFrame *pFrame, const wxString& format, ...)
+#if !wxUSE_UTF8_LOCALE_ONLY
+void wxDoLogStatusWchar(wxFrame *pFrame, const wxChar *format, ...)
 {
     va_list argptr;
     va_start(argptr, format);
     wxVLogStatus(pFrame, format, argptr);
     va_end(argptr);
 }
+#endif // !wxUSE_UTF8_LOCALE_ONLY
+
+#if wxUSE_UNICODE_UTF8
+void wxDoLogStatusUtf8(wxFrame *pFrame, const char *format, ...)
+{
+    va_list argptr;
+    va_start(argptr, format);
+    wxVLogStatus(pFrame, format, argptr);
+    va_end(argptr);
+}
+#endif // wxUSE_UNICODE_UTF8
 
 // ----------------------------------------------------------------------------
 // wxLogGui implementation (FIXME MT-unsafe)