used as it will ensure smoother transition to {\tt std::string} when wxWidgets
starts using it instead of wxString.
+Also please note that in this manual \texttt{char} is sometimes used instead of
+\texttt{wxChar} because it hasn't been fully updated yet. Please substitute as
+necessary and refer to the sources in case of a doubt.
+
+
\wxheading{Derived from}
None
\membersection{wxString::c\_str}\label{wxstringcstr}
-\constfunc{const char *}{c\_str}{\void}
+\constfunc{const wxChar *}{c\_str}{\void}
Returns a pointer to the string data ({\tt const char*} in ANSI build,
{\tt const wchar\_t*} in Unicode build).
\membersection{wxString::Cmp}\label{wxstringcmp}
+\constfunc{int}{Cmp}{\param{const wxString\&}{ s}}
+
\constfunc{int}{Cmp}{\param{const char*}{ psz}}
Case-sensitive comparison.
\membersection{wxString::CmpNoCase}\label{wxstringcmpnocase}
+\constfunc{int}{CmpNoCase}{\param{const wxString\&}{ s}}
+
\constfunc{int}{CmpNoCase}{\param{const char*}{ psz}}
Case-insensitive comparison.
Returns string representation suitable for passing to OS' functions for
file handling. In ANSI build, this is same as \helpref{c\_str}{wxstringcstr}.
In Unicode build, returned value can be either wide character string
-or C string in charset matching the {\tt wxConvFile} object, depending on
+or C string in charset matching the {\tt wxConvFileName} object, depending on
the OS.
\wxheading{See also}
\membersection{wxString::FormatV}\label{wxstringformatv}
-\func{static wxString}{Format}{\param{const wxChar }{*format}, \param{va\_list }{argptr}}
+\func{static wxString}{FormatV}{\param{const wxChar }{*format}, \param{va\_list }{argptr}}
This static function returns the string containing the result of calling
\helpref{PrintfV}{wxstringprintfv} with the passed parameters on it.
\membersection{wxString::GetData}\label{wxstringgetdata}
-\constfunc{const char*}{GetData}{\void}
+\constfunc{const wxChar*}{GetData}{\void}
wxWidgets compatibility conversion. Returns a constant pointer to the data in the string.
Same as \helpref{wxString::Find}{wxstringfind}.
-\constfunc{size\_t}{Index}{\param{const char*}{ sz}, \param{bool}{ caseSensitive = true}, \param{bool}{ fromEnd = false}}
-
-Search the element in the array, starting from either side.
-
-If {\it fromEnd} is true, reverse search direction.
-
-If {\bf caseSensitive}, comparison is case sensitive (the default).
-
-Returns the index of the first item matched, or {\tt wxNOT\_FOUND}.
-
% TODO
%\membersection{wxString::insert}\label{wxstringinsert}
% Wrong!
Returns true if strings are equal, false otherwise.
-See also \helpref{Cmp}{wxstringcmp}, \helpref{CmpNoCase}{wxstringcmpnocase}, \helpref{IsSameAs}{wxstringissameas2}
-
-\membersection{wxString::IsSameAs}\label{wxstringissameas2}
+See also \helpref{Cmp}{wxstringcmp}, \helpref{CmpNoCase}{wxstringcmpnocase}
\constfunc{bool}{IsSameAs}{\param{char}{ c}, \param{bool}{ caseSensitive = true}}
Returns true if the string is equal to the character, false otherwise.
-See also \helpref{Cmp}{wxstringcmp}, \helpref{CmpNoCase}{wxstringcmpnocase}, \helpref{IsSameAs}{wxstringissameas}
+See also \helpref{Cmp}{wxstringcmp}, \helpref{CmpNoCase}{wxstringcmpnocase}
\membersection{wxString::IsWord}\label{wxstringisword}
\func{wxString\&}{Remove}{\param{size\_t}{ pos}, \param{size\_t}{ len}}
-Removes the {\it len} characters from the string, starting at {\it pos}.
+Removes {\it len} characters from the string, starting at {\it pos}.
\membersection{wxString::RemoveLast}\label{wxstringremovelast}
\constfunc{bool}{ToULong}{\param{unsigned long}{ *val}, \param{int }{base = $10$}}
-Attempts to convert the string to a unsigned integer in base {\it base}.
+Attempts to convert the string to an unsigned integer in base {\it base}.
Returns {\tt true} on success in which case the number is stored in the
location pointed to by {\it val} or {\tt false} if the string does not
-represent a valid number in the given base.
+represent a valid number in the given base. Please notice that this function
+behaves in the same way as the standard \texttt{strtoul()} and so it simply
+converts negative numbers to unsigned representation instead of rejecting them
+(e.g. $-1$ is returned as \texttt{ULONG\_MAX}).
See \helpref{wxString::ToLong}{wxstringtolong} for the more detailed
description of the {\it base} parameter.
\membersection{wxString::operator []}\label{wxstringoperatorbracket}
-\func{char\&}{operator []}{\param{size\_t}{ i}}
+\func{wxChar\&}{operator []}{\param{size\_t}{ i}}
-\func{char}{operator []}{\param{size\_t}{ i}}
+\constfunc{wxChar}{operator []}{\param{size\_t}{ i}}
-\func{char}{operator []}{\param{int}{ i}}
+\func{wxChar\&}{operator []}{\param{int}{ i}}
+
+\constfunc{wxChar}{operator []}{\param{int}{ i}}
Element extraction.
}
\end{verbatim}
+Note that the exact usage of this depends on whether on not wxUSE\_STL is enabled. If
+wxUSE\_STL is enabled, wxStringBuffer creates a separate empty character buffer, and
+if wxUSE\_STL is disabled, it uses GetWriteBuf() from wxString, keeping the same buffer
+wxString uses intact. In other words, relying on wxStringBuffer containing the old
+wxString data is probably not a good idea if you want to build your program in both
+with and without wxUSE\_STL.
+
\wxheading{Derived from}
None
\membersection{wxStringBuffer::operator wxChar *}\label{wxstringbufferwxchar}
-\constfunc{wxChar *}{operator wxChar *}{\void}
+\func{wxChar *}{operator wxChar *}{\void}
+
+Returns the writable pointer to a buffer of the size at least equal to the
+length specified in the constructor.
+
+
+
+\section{\class{wxStringBufferLength}}\label{wxstringbufferlength}
+
+This tiny class allows to conveniently access the \helpref{wxString}{wxstring}
+internal buffer as a writable pointer without any risk of forgetting to restore
+the string to the usable state later, and allows the user to set the internal
+length of the string.
+
+For example, assuming you have a low-level OS function called
+{\tt int GetMeaningOfLifeAsString(char *)} copying the value in the provided
+buffer (which must be writable, of course), and returning the actual length
+of the string, you might call it like this:
+
+\begin{verbatim}
+ wxString theAnswer;
+ wxStringBuffer theAnswerBuffer(theAnswer, 1024);
+ int nLength = GetMeaningOfLifeAsString(theAnswerBuffer);
+ theAnswerBuffer.SetLength(nLength);
+ if ( theAnswer != "42" )
+ {
+ wxLogError("Something is very wrong!");
+ }
+\end{verbatim}
+
+Note that the exact usage of this depends on whether on not wxUSE\_STL is enabled. If
+wxUSE\_STL is enabled, wxStringBuffer creates a separate empty character buffer, and
+if wxUSE\_STL is disabled, it uses GetWriteBuf() from wxString, keeping the same buffer
+wxString uses intact. In other words, relying on wxStringBuffer containing the old
+wxString data is probably not a good idea if you want to build your program in both
+with and without wxUSE\_STL.
+
+Note that SetLength {\tt must} be called before wxStringBufferLength destructs.
+
+\wxheading{Derived from}
+
+None
+
+\wxheading{Include files}
+
+<wx/string.h>
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxStringBufferLength::wxStringBufferLength}\label{wxstringbufferlengthctor}
+
+\func{}{wxStringBufferLength}{\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. Basically, this
+is equivalent to calling \helpref{GetWriteBuf}{wxstringgetwritebuf} and
+saving the result.
+
+\membersection{wxStringBufferLength::\destruct{wxStringBufferLength}}\label{wxstringbufferlengthdtor}
+
+\func{}{\destruct{wxStringBufferLength}}{\void}
+
+Restores the string passed to the constructor to the usable state by calling
+\helpref{UngetWriteBuf}{wxstringungetwritebuf} on it.
+
+\membersection{wxStringBufferLength::SetLength}\label{wxstringbufferlengthsetlength}
+
+\func{void}{SetLength}{\param{size\_t }{nLength}}
+
+Sets the internal length of the string referred to by wxStringBufferLength to
+{\it nLength} characters.
+
+Must be called before wxStringBufferLength destructs.
+
+\membersection{wxStringBufferLength::operator wxChar *}\label{wxstringbufferlengthwxchar}
+
+\func{wxChar *}{operator wxChar *}{\void}
Returns the writable pointer to a buffer of the size at least equal to the
length specified in the constructor.