added wxUTF8StringBuffer for writing UTF8 data into wxString efficiently, similarly to existing wxStringBuffer classes

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48222 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2007-08-20 15:19:15 +00:00
parent 4f1cf94b94
commit 628f87da56
3 changed files with 78 additions and 6 deletions

View File

@@ -2787,12 +2787,6 @@ public:
: m_str(str), m_buf(lenWanted), m_len(0), m_lenSet(false)
{ }
~wxStringTypeBufferLengthBase()
{
wxASSERT(m_lenSet);
m_str.assign(m_buf.data(), m_len);
}
operator CharType*() { return m_buf.data(); }
void SetLength(size_t length) { m_len = length; m_lenSet = true; }
@@ -2870,6 +2864,33 @@ typedef wxStringInternalBuffer wxStringBuffer;
typedef wxStringInternalBufferLength wxStringBufferLength;
#endif // !wxUSE_STL_BASED_WXSTRING && !wxUSE_UNICODE_UTF8
#if wxUSE_UNICODE_UTF8 && !wxUSE_STL_BASED_WXSTRING
typedef wxStringInternalBuffer wxUTF8StringBuffer;
typedef wxStringInternalBufferLength wxUTF8StringBufferLength;
#elif wxUSE_UNICODE // !wxUSE_UNICODE_UTF8 || wxUSE_STL_BASED_WXSTRING
class WXDLLIMPEXP_BASE wxUTF8StringBuffer : public wxStringTypeBufferBase<char>
{
public:
wxUTF8StringBuffer(wxString& str, size_t lenWanted = 1024)
: wxStringTypeBufferBase<char>(str, lenWanted) {}
~wxUTF8StringBuffer();
DECLARE_NO_COPY_CLASS(wxUTF8StringBuffer)
};
class WXDLLIMPEXP_BASE wxUTF8StringBufferLength
: public wxStringTypeBufferLengthBase<char>
{
public:
wxUTF8StringBufferLength(wxString& str, size_t lenWanted = 1024)
: wxStringTypeBufferLengthBase<char>(str, lenWanted) {}
~wxUTF8StringBufferLength();
DECLARE_NO_COPY_CLASS(wxUTF8StringBufferLength)
};
#endif // wxUSE_UNICODE_UTF8 && !wxUSE_STL_BASED_WXSTRING or not
// ---------------------------------------------------------------------------
// wxString comparison functions: operator versions are always case sensitive
// ---------------------------------------------------------------------------