git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59945
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
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
-wxCharBuffer p(s.ToUTF8());
+const wxScopedCharBuffer p(s.ToUTF8());
-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().
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
#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)
// ----------------------------------------------------------------------------
: 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)
: 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)
: 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)
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
@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
/**
Same as utf8_str().
*/
/**
Same as utf8_str().
*/
- const char* ToUTF8() const;
-
- /**
- @overload
- */
- const wxCharBuffer ToUTF8() const;
+ const wxScopedCharBuffer ToUTF8() const;
_("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));
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)
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;
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);
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 )