]> git.saurik.com Git - wxWidgets.git/commitdiff
always return (owned or non-owned, depending on build) wxScopedCharBuffer from utf8_s...
authorVáclav Slavík <vslavik@fastmail.fm>
Mon, 30 Mar 2009 18:28:42 +0000 (18:28 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Mon, 30 Mar 2009 18:28:42 +0000 (18:28 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59945 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/doxygen/overviews/unicode.h
include/wx/buffer.h
include/wx/ipcbase.h
include/wx/string.h
interface/wx/string.h
samples/sockets/client.cpp
src/common/sckaddr.cpp
src/gtk/print.cpp

index be0d550b9bb501fa91ed888d78599e170d476f42..a84dc50aa14aa24a891795771d90039c2f77af37 100644 (file)
@@ -372,19 +372,13 @@ const char *p = s.ToUTF8();
 puts(p); // or call any other function taking const char *
 @endcode
 does @b not work because the temporary buffer returned by wxString::ToUTF8() is
 puts(p); // or call any other function taking const char *
 @endcode
 does @b not work because the temporary buffer returned by wxString::ToUTF8() is
-destroyed and @c p is left pointing nowhere. To correct this you may use
+destroyed and @c p is left pointing nowhere. To correct this you should use
 @code
 @code
-wxCharBuffer p(s.ToUTF8());
+const wxScopedCharBuffer p(s.ToUTF8());
 puts(p);
 @endcode
 puts(p);
 @endcode
-which does work but results in an unnecessary copy of string data in the build
-configurations when wxString::ToUTF8() returns the pointer to internal string buffer.
-If this inefficiency is important you may write
-@code
-const wxUTF8Buf p(s.ToUTF8());
-puts(p);
-@endcode
-where @c wxUTF8Buf is the type corresponding to the real return type of wxString::ToUTF8().
+which does work.
+
 Similarly, wxWX2WCbuf can be used for the return type of wxString::wc_str().
 But, once again, none of these cryptic types is really needed if you just pass
 the return value of any of the functions mentioned in this section to another
 Similarly, wxWX2WCbuf can be used for the return type of wxString::wc_str().
 But, once again, none of these cryptic types is really needed if you just pass
 the return value of any of the functions mentioned in this section to another
index f3c4e34f4327304f1a8299c726694b48a5b1fcd1..9dc93398294eda9692bef7a492b051c0cc6363f1 100644 (file)
@@ -427,13 +427,6 @@ typedef wxWritableCharTypeBuffer<wchar_t> wxWritableWCharBuffer;
     #define wxWX2WCbuf wxWCharBuffer
 #endif // Unicode/ANSI
 
     #define wxWX2WCbuf wxWCharBuffer
 #endif // Unicode/ANSI
 
-// type of the value returned by wxString::utf8_str()
-#if wxUSE_UNICODE_UTF8
-    #define wxUTF8Buf char *
-#else
-    #define wxUTF8Buf wxCharBuffer
-#endif
-
 // ----------------------------------------------------------------------------
 // A class for holding growable data buffers (not necessarily strings)
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // A class for holding growable data buffers (not necessarily strings)
 // ----------------------------------------------------------------------------
index 7619671f104ecae8ea168f9bbf9bd450a6073628..3918547141ddae0bdaf0a57de84810e7daab39f7 100644 (file)
@@ -72,7 +72,7 @@ public:
                                               : size, wxIPC_UNICODETEXT); }
   bool Execute(const wxString& s)
   {
                                               : size, wxIPC_UNICODETEXT); }
   bool Execute(const wxString& s)
   {
-      const wxUTF8Buf buf = s.utf8_str();
+      const wxScopedCharBuffer buf = s.utf8_str();
       return DoExecute(buf, strlen(buf) + 1, wxIPC_UTF8TEXT);
   }
   bool Execute(const wxCStrData& cs)
       return DoExecute(buf, strlen(buf) + 1, wxIPC_UTF8TEXT);
   }
   bool Execute(const wxCStrData& cs)
@@ -94,7 +94,7 @@ public:
                                        : size, wxIPC_UNICODETEXT); }
   bool Poke(const wxString& item, const wxString s)
   {
                                        : size, wxIPC_UNICODETEXT); }
   bool Poke(const wxString& item, const wxString s)
   {
-      const wxUTF8Buf buf = s.utf8_str();
+      const wxScopedCharBuffer buf = s.utf8_str();
       return DoPoke(item, buf,  strlen(buf) + 1, wxIPC_UTF8TEXT);
   }
   bool Poke(const wxString& item, const wxCStrData& cs)
       return DoPoke(item, buf,  strlen(buf) + 1, wxIPC_UTF8TEXT);
   }
   bool Poke(const wxString& item, const wxCStrData& cs)
@@ -116,7 +116,7 @@ public:
                                          : size, wxIPC_UNICODETEXT); }
   bool Advise(const wxString& item, const wxString s)
   {
                                          : size, wxIPC_UNICODETEXT); }
   bool Advise(const wxString& item, const wxString s)
   {
-      const wxUTF8Buf buf = s.utf8_str();
+      const wxScopedCharBuffer buf = s.utf8_str();
       return DoAdvise(item, buf,  strlen(buf) + 1, wxIPC_UTF8TEXT);
   }
   bool Advise(const wxString& item, const wxCStrData& cs)
       return DoAdvise(item, buf,  strlen(buf) + 1, wxIPC_UTF8TEXT);
   }
   bool Advise(const wxString& item, const wxCStrData& cs)
index 2ebce253632e9d2ad5f7c1ee3e891800472bd5af..5b29a2546dd91bcf2c97d4de04cde10b97a5aaa7 100644 (file)
@@ -1710,8 +1710,10 @@ public:
         return FromImpl(wxStringImpl(utf8, len));
     }
 
         return FromImpl(wxStringImpl(utf8, len));
     }
 
-    const char* utf8_str() const { return wx_str(); }
-    const char* ToUTF8() const { return wx_str(); }
+    const wxScopedCharBuffer utf8_str() const
+        { return wxCharBuffer::CreateNonOwned(wx_str()); }
+    const wxScopedCharBuffer ToUTF8() const
+        { return wxCharBuffer::CreateNonOwned(wx_str()); }
 
     // this function exists in UTF-8 build only and returns the length of the
     // internal UTF-8 representation
 
     // this function exists in UTF-8 build only and returns the length of the
     // internal UTF-8 representation
index 3056895ba79d9b87e627a7baa4219b5e74be89a4..1c43722bea617f7329f9629dbc2e21aaebf69e24 100644 (file)
@@ -420,12 +420,7 @@ public:
 
         @see wc_str(), c_str(), mb_str()
     */
 
         @see wc_str(), c_str(), mb_str()
     */
-    const char* utf8_str() const;
-    
-    /**
-        @overload
-    */
-    const wxCharBuffer utf8_str() const;
+    const wxScopedCharBuffer utf8_str() const;
 
     /**
         Converts the strings contents to the wide character represention
 
     /**
         Converts the strings contents to the wide character represention
@@ -497,12 +492,7 @@ public:
     /**
         Same as utf8_str().
     */
     /**
         Same as utf8_str().
     */
-    const char* ToUTF8() const;
-
-    /**
-        @overload
-    */
-    const wxCharBuffer ToUTF8() const;
+    const wxScopedCharBuffer ToUTF8() const;
 
     //@}
 
 
     //@}
 
index a50cf54286828213628ca267cdda273585e89129..d078e89428f6c569959cf1a33cf56f51447adb2d 100644 (file)
@@ -479,7 +479,7 @@ void MyFrame::OnTest2(wxCommandEvent& WXUNUSED(event))
     _("Test 2 ..."),
     _("Yes I like wxWidgets!"));
 
     _("Test 2 ..."),
     _("Yes I like wxWidgets!"));
 
-  const wxUTF8Buf msg1(s.utf8_str());
+  const wxScopedCharBuffer msg1(s.utf8_str());
   size_t len  = wxStrlen(msg1) + 1;
   wxCharBuffer msg2(wxStrlen(msg1));
 
   size_t len  = wxStrlen(msg1) + 1;
   wxCharBuffer msg2(wxStrlen(msg1));
 
index b706132e5c7201b5a9808422b5539e5bb60f9114..9e21624fed06df1fd95b737a4949e0c62e286c9c 100644 (file)
@@ -508,7 +508,7 @@ bool wxSockAddressImpl::SetHostName4(const wxString& name)
     if ( !addr )
         return false;
 
     if ( !addr )
         return false;
 
-    const wxUTF8Buf namebuf(name.utf8_str());
+    const wxScopedCharBuffer namebuf(name.utf8_str());
 
     // first check if this is an address in quad dotted notation
 #if defined(HAVE_INET_ATON)
 
     // first check if this is an address in quad dotted notation
 #if defined(HAVE_INET_ATON)
@@ -695,7 +695,7 @@ bool wxSockAddressImpl::SetPath(const wxString& path)
     if ( !addr )
         return false;
 
     if ( !addr )
         return false;
 
-    const wxUTF8Buf buf(path.utf8_str());
+    const wxScopedCharBuffer buf(path.utf8_str());
     if ( strlen(buf) >= UNIX_PATH_MAX )
         return false;
 
     if ( strlen(buf) >= UNIX_PATH_MAX )
         return false;
 
index 4c77554f19378b9181a299faaf2a87f505904095..563e214334dc8e0e78db1edbbe75475a4ead0cb8 100644 (file)
@@ -1700,7 +1700,7 @@ void wxGtkPrinterDCImpl::DoDrawRotatedText(const wxString& text, wxCoord x, wxCo
 
     bool underlined = m_font.Ok() && m_font.GetUnderlined();
 
 
     bool underlined = m_font.Ok() && m_font.GetUnderlined();
 
-    const wxUTF8Buf data = text.utf8_str();
+    const wxScopedCharBuffer data = text.utf8_str();
 
     size_t datalen = strlen(data);
     pango_layout_set_text( m_layout, data, datalen);
 
     size_t datalen = strlen(data);
     pango_layout_set_text( m_layout, data, datalen);
@@ -2102,7 +2102,7 @@ void wxGtkPrinterDCImpl::DoGetTextExtent(const wxString& string, wxCoord *width,
     cairo_scale(m_cairo, m_scaleX, m_scaleY);
 
     // Set layout's text
     cairo_scale(m_cairo, m_scaleX, m_scaleY);
 
     // Set layout's text
-    const wxUTF8Buf dataUTF8 = string.utf8_str();
+    const wxScopedCharBuffer dataUTF8 = string.utf8_str();
 
     gint oldSize=0;
     if ( theFont )
 
     gint oldSize=0;
     if ( theFont )