deprecated wxString::GetWriteBuf() and friends in favour of wxStringBuffer
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44637 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -942,7 +942,7 @@ public:
|
|||||||
// string += string
|
// string += string
|
||||||
wxString& operator<<(const wxString& s)
|
wxString& operator<<(const wxString& s)
|
||||||
{
|
{
|
||||||
#if !wxUSE_STL
|
#if WXWIN_COMPATIBILITY_2_8 && !wxUSE_STL
|
||||||
wxASSERT_MSG( s.GetStringData()->IsValid(),
|
wxASSERT_MSG( s.GetStringData()->IsValid(),
|
||||||
_T("did you forget to call UngetWriteBuf()?") );
|
_T("did you forget to call UngetWriteBuf()?") );
|
||||||
#endif
|
#endif
|
||||||
@@ -1175,14 +1175,16 @@ public:
|
|||||||
// minimize the string's memory
|
// minimize the string's memory
|
||||||
// only works if the data of this string is not shared
|
// only works if the data of this string is not shared
|
||||||
bool Shrink();
|
bool Shrink();
|
||||||
#if !wxUSE_STL
|
#if WXWIN_COMPATIBILITY_2_8 && !wxUSE_STL
|
||||||
|
// These are deprecated, use wxStringBuffer or wxStringBufferLength instead
|
||||||
|
//
|
||||||
// get writable buffer of at least nLen bytes. Unget() *must* be called
|
// get writable buffer of at least nLen bytes. Unget() *must* be called
|
||||||
// a.s.a.p. to put string back in a reasonable state!
|
// a.s.a.p. to put string back in a reasonable state!
|
||||||
wxChar *GetWriteBuf(size_t nLen);
|
wxDEPRECATED( wxChar *GetWriteBuf(size_t nLen) );
|
||||||
// call this immediately after GetWriteBuf() has been used
|
// call this immediately after GetWriteBuf() has been used
|
||||||
void UngetWriteBuf();
|
wxDEPRECATED( void UngetWriteBuf() );
|
||||||
void UngetWriteBuf(size_t nLen);
|
wxDEPRECATED( void UngetWriteBuf(size_t nLen) );
|
||||||
#endif
|
#endif // WXWIN_COMPATIBILITY_2_8 && !wxUSE_STL
|
||||||
|
|
||||||
// wxWidgets version 1 compatibility functions
|
// wxWidgets version 1 compatibility functions
|
||||||
|
|
||||||
@@ -1371,6 +1373,17 @@ public:
|
|||||||
// string += char
|
// string += char
|
||||||
wxString& operator+=(wxChar ch)
|
wxString& operator+=(wxChar ch)
|
||||||
{ return (wxString&)wxStringBase::operator+=(ch); }
|
{ return (wxString&)wxStringBase::operator+=(ch); }
|
||||||
|
|
||||||
|
private:
|
||||||
|
#if !wxUSE_STL
|
||||||
|
// helpers for wxStringBuffer and wxStringBufferLength
|
||||||
|
wxChar *DoGetWriteBuf(size_t nLen);
|
||||||
|
void DoUngetWriteBuf();
|
||||||
|
void DoUngetWriteBuf(size_t nLen);
|
||||||
|
|
||||||
|
friend class WXDLLIMPEXP_BASE wxStringBuffer;
|
||||||
|
friend class WXDLLIMPEXP_BASE wxStringBufferLength;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
// notice that even though for many compilers the friend declarations above are
|
// notice that even though for many compilers the friend declarations above are
|
||||||
@@ -1459,9 +1472,9 @@ class WXDLLIMPEXP_BASE wxStringBuffer
|
|||||||
public:
|
public:
|
||||||
wxStringBuffer(wxString& str, size_t lenWanted = 1024)
|
wxStringBuffer(wxString& str, size_t lenWanted = 1024)
|
||||||
: m_str(str), m_buf(NULL)
|
: m_str(str), m_buf(NULL)
|
||||||
{ m_buf = m_str.GetWriteBuf(lenWanted); }
|
{ m_buf = m_str.DoGetWriteBuf(lenWanted); }
|
||||||
|
|
||||||
~wxStringBuffer() { m_str.UngetWriteBuf(); }
|
~wxStringBuffer() { m_str.DoUngetWriteBuf(); }
|
||||||
|
|
||||||
operator wxChar*() const { return m_buf; }
|
operator wxChar*() const { return m_buf; }
|
||||||
|
|
||||||
@@ -1478,14 +1491,14 @@ public:
|
|||||||
wxStringBufferLength(wxString& str, size_t lenWanted = 1024)
|
wxStringBufferLength(wxString& str, size_t lenWanted = 1024)
|
||||||
: m_str(str), m_buf(NULL), m_len(0), m_lenSet(false)
|
: m_str(str), m_buf(NULL), m_len(0), m_lenSet(false)
|
||||||
{
|
{
|
||||||
m_buf = m_str.GetWriteBuf(lenWanted);
|
m_buf = m_str.DoGetWriteBuf(lenWanted);
|
||||||
wxASSERT(m_buf != NULL);
|
wxASSERT(m_buf != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
~wxStringBufferLength()
|
~wxStringBufferLength()
|
||||||
{
|
{
|
||||||
wxASSERT(m_lenSet);
|
wxASSERT(m_lenSet);
|
||||||
m_str.UngetWriteBuf(m_len);
|
m_str.DoUngetWriteBuf(m_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
operator wxChar*() const { return m_buf; }
|
operator wxChar*() const { return m_buf; }
|
||||||
|
@@ -1061,7 +1061,7 @@ bool wxString::Shrink()
|
|||||||
|
|
||||||
#if !wxUSE_STL
|
#if !wxUSE_STL
|
||||||
// get the pointer to writable buffer of (at least) nLen bytes
|
// get the pointer to writable buffer of (at least) nLen bytes
|
||||||
wxChar *wxString::GetWriteBuf(size_t nLen)
|
wxChar *wxString::DoGetWriteBuf(size_t nLen)
|
||||||
{
|
{
|
||||||
if ( !AllocBeforeWrite(nLen) ) {
|
if ( !AllocBeforeWrite(nLen) ) {
|
||||||
// allocation failure handled by caller
|
// allocation failure handled by caller
|
||||||
@@ -1075,12 +1075,12 @@ wxChar *wxString::GetWriteBuf(size_t nLen)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// put string back in a reasonable state after GetWriteBuf
|
// put string back in a reasonable state after GetWriteBuf
|
||||||
void wxString::UngetWriteBuf()
|
void wxString::DoUngetWriteBuf()
|
||||||
{
|
{
|
||||||
UngetWriteBuf(wxStrlen(m_pchData));
|
DoUngetWriteBuf(wxStrlen(m_pchData));
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxString::UngetWriteBuf(size_t nLen)
|
void wxString::DoUngetWriteBuf(size_t nLen)
|
||||||
{
|
{
|
||||||
wxStringData * const pData = GetStringData();
|
wxStringData * const pData = GetStringData();
|
||||||
|
|
||||||
@@ -1091,8 +1091,28 @@ void wxString::UngetWriteBuf(size_t nLen)
|
|||||||
pData->nDataLength = nLen;
|
pData->nDataLength = nLen;
|
||||||
pData->Validate(true);
|
pData->Validate(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// deprecated compatibility code:
|
||||||
|
#if WXWIN_COMPATIBILITY_2_8
|
||||||
|
wxChar *wxString::GetWriteBuf(size_t nLen)
|
||||||
|
{
|
||||||
|
return DoGetWriteBuf(nLen);
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxString::UngetWriteBuf()
|
||||||
|
{
|
||||||
|
DoUngetWriteBuf();
|
||||||
|
}
|
||||||
|
|
||||||
|
void wxString::UngetWriteBuf(size_t nLen)
|
||||||
|
{
|
||||||
|
DoUngetWriteBuf(nLen);
|
||||||
|
}
|
||||||
|
#endif // WXWIN_COMPATIBILITY_2_8
|
||||||
|
|
||||||
#endif // !wxUSE_STL
|
#endif // !wxUSE_STL
|
||||||
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// data access
|
// data access
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
@@ -635,18 +635,19 @@ void StringTestCase::WriteBuf()
|
|||||||
CPPUNIT_ASSERT_EQUAL(_T('o'), s[2]);
|
CPPUNIT_ASSERT_EQUAL(_T('o'), s[2]);
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)3, s.length());
|
CPPUNIT_ASSERT_EQUAL((size_t)3, s.length());
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
wxChar *p = s.GetWriteBuf(10);
|
wxStringBufferLength buf(s, 10);
|
||||||
wxStrcpy(p, _T("barrbaz"));
|
wxStrcpy(buf, _T("barrbaz"));
|
||||||
s.UngetWriteBuf(4);
|
buf.SetLength(4);
|
||||||
|
|
||||||
CPPUNIT_ASSERT_EQUAL(_T('b'), s[0u]);
|
|
||||||
CPPUNIT_ASSERT_EQUAL(_T('a'), s[1]);
|
|
||||||
CPPUNIT_ASSERT_EQUAL(_T('r'), s[2]);
|
|
||||||
CPPUNIT_ASSERT_EQUAL(_T('r'), s[3]);
|
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)4, s.length());
|
|
||||||
|
|
||||||
CPPUNIT_ASSERT_EQUAL( 0, wxStrcmp(_T("barr"), s) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CPPUNIT_ASSERT_EQUAL(_T('b'), s[0u]);
|
||||||
|
CPPUNIT_ASSERT_EQUAL(_T('a'), s[1]);
|
||||||
|
CPPUNIT_ASSERT_EQUAL(_T('r'), s[2]);
|
||||||
|
CPPUNIT_ASSERT_EQUAL(_T('r'), s[3]);
|
||||||
|
CPPUNIT_ASSERT_EQUAL((size_t)4, s.length());
|
||||||
|
|
||||||
|
CPPUNIT_ASSERT_EQUAL( 0, wxStrcmp(_T("barr"), s) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user