added wxStringBuffer helper

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12804 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2001-12-01 17:16:16 +00:00
parent f2d0790b1a
commit 1d21855083
2 changed files with 73 additions and 0 deletions

View File

@@ -1116,3 +1116,57 @@ Implicit conversion to a C string.
These comparisons are case-sensitive. These comparisons are case-sensitive.
\section{\class{wxStringBuffer}}\label{wxstringbuffer}
This tiny class allows to conveniently access the \helpref{wxString}{wxstring}
internal buffer as a writable pointer without any risk to forget to restore
the string to the usable state later.
For example, assuming you have a low-level OS function called
{\tt GetMeaningOfLifeAsString(char *)} returning the value in the provided
buffer (which must be writable, of course) you might call it like this:
\begin{verbatim}
wxString theAnswer;
GetMeaningOfLifeAsString(wxStringBuffer(theAnswer, 1024));
if ( theAnswer != "42" )
{
wxLogError("Something is very wrong!");
}
\end{verbatim}
\wxheading{Derived from}
None
\wxheading{Include files}
<wx/string.h>
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxStringBuffer::wxStringBuffer}
\func{}{wxStringBuffer}{\param{const wxString\& }{str}, \param{size\_t }{len}}
Constructs a writable string buffer object associated with the given string
and containing enough space for at least {\it len} characters. Basicly, this
is equivalent to calling \helpref{GetWriteBuf}{wxstringgetwritebuf} and
saving the result.
\membersection{wxStringBuffer::\destruct{wxStringBuffer}}
\func{}{\destruct{wxStringBuffer}}{\void}
Restores the string passed to the constructor to the usable state by calling
\helpref{UngetWriteBuf}{wxstringungetwritebuf} on it.
\membersection{wxStringBuffer::operator wxChar *}
\constfunc{wxChar *}{operator wxChar *}{\void}
Returns the writable pointer to a buffer of the size at least equal to the
length specified in the constructor.

View File

@@ -1082,6 +1082,25 @@ public:
{ Copy(array); } { Copy(array); }
}; };
// ----------------------------------------------------------------------------
// wxStringBuffer: a tiny class allowing to get a writable pointer into string
// ----------------------------------------------------------------------------
class WXDLLEXPORT wxStringBuffer
{
public:
wxStringBuffer(wxString& str, size_t lenWanted = 1024)
: m_str(str) { m_buf = m_str.GetWriteBuf(lenWanted); }
~wxStringBuffer() { m_str.UngetWriteBuf(); }
operator wxChar*() const { return m_buf; }
private:
wxString& m_str;
wxChar *m_buf;
};
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// wxString comparison functions: operator versions are always case sensitive // wxString comparison functions: operator versions are always case sensitive
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------