]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/string.h
Made wxGTK wxDataViewCtrl compile again
[wxWidgets.git] / include / wx / string.h
index b6002fd5aaf123bca0008ba343c5420c2b3d128d..813dc956aaac5144a5d8fa14fe06cc21e2936a82 100644 (file)
@@ -342,14 +342,16 @@ public:
     // 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
-    // the hack, even though there's no real template parameter:
-    struct FormatDummyArg {} ;
-
+    // the hack, even though there's no real template parameter. We can't move
+    // it to wxStrig, because it would shadow these versions of Format() then.
     template<typename T>
     inline static typename StringReturnType<T>::type
-    Format(const wxFormatString& fmt, FormatDummyArg dummy = FormatDummyArg())
+    Format(const T& fmt)
     {
-        return DoFormatWchar(fmt);
+        // NB: this doesn't compile if T is not (some form of) a string;
+        //     this makes Format's prototype equivalent to
+        //     Format(const wxFormatString& fmt)
+        return DoFormatWchar(wxFormatString(fmt));
     }
 
     // int Printf(const wxString& format, ...);
@@ -1238,18 +1240,25 @@ public:
     // the behaviour of these functions with the strings containing anything
     // else than 7 bit ASCII characters is undefined, use at your own risk.
 #if wxUSE_UNICODE
-    static wxString FromAscii(const char *ascii, size_t len);  // string
-    static wxString FromAscii(const char *ascii);  // string
-    static wxString FromAscii(const char ascii);   // char
+    static wxString FromAscii(const char *ascii, size_t len);
+    static wxString FromAscii(const char *ascii);
+    static wxString FromAscii(char ascii);
     const wxCharBuffer ToAscii() const;
 #else // ANSI
     static wxString FromAscii(const char *ascii) { return wxString( ascii ); }
     static wxString FromAscii(const char *ascii, size_t len)
         { return wxString( ascii, len ); }
-    static wxString FromAscii(const char ascii) { return wxString( ascii ); }
+    static wxString FromAscii(char ascii) { return wxString( ascii ); }
     const char *ToAscii() const { return c_str(); }
 #endif // Unicode/!Unicode
 
+    // also provide unsigned char overloads as signed/unsigned doesn't matter
+    // for 7 bit ASCII characters
+    static wxString FromAscii(const unsigned char *ascii)
+        { return FromAscii((const char *)ascii); }
+    static wxString FromAscii(const unsigned char *ascii, size_t len)
+        { return FromAscii((const char *)ascii, len); }
+
     // conversion to/from UTF-8:
 #if wxUSE_UNICODE_UTF8
     static wxString FromUTF8(const char *utf8)
@@ -2689,16 +2698,7 @@ inline wxString operator+(wchar_t ch, const wxString& string)
     { return wxUniChar(ch) + string; }
 
 
-#if wxUSE_STL_BASED_WXSTRING
-    // return an empty wxString (not very useful with wxUSE_STL == 1)
-    inline const wxString wxGetEmptyString() { return wxString(); }
-#else // !wxUSE_STL_BASED_WXSTRING
-    // return an empty wxString (more efficient than wxString() here)
-    inline const wxString& wxGetEmptyString()
-    {
-        return *(wxString *)&wxEmptyString;
-    }
-#endif // wxUSE_STL_BASED_WXSTRING/!wxUSE_STL_BASED_WXSTRING
+#define wxGetEmptyString() wxString()
 
 // ----------------------------------------------------------------------------
 // wxStringBuffer: a tiny class allowing to get a writable pointer into string