added wxStringOutputStream::TellO(); fixed bugs in OnSysWrite()

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29226 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2004-09-19 21:58:50 +00:00
parent 5a4c7f718a
commit a5ea75bc6a
3 changed files with 22 additions and 3 deletions

View File

@ -13,7 +13,7 @@
This class implements an output stream which writes data either to a
user-provided or internally allocated string. Note that currently this stream
does not support seeking.
does not support seeking but can tell its current position.
\wxheading{Derived from}
@ -34,6 +34,12 @@ If the provided pointer is non-\texttt{NULL}, data will be written to it.
Otherwise, an internal string is used for the data written to this stream, use
\helpref{GetString()}{wxstringoutputstreamgetstring} to get access to it.
If \arg{str} is used, data written to the stream is appended to the current
contents of it, i.e. the string is not cleared here. However if it is not
empty, the positions returned by \helpref{TellO}{wxoutputstreamtello} will be
offset by the initial string length, i.e. initial stream position will be the
initial length of the string and not $0$.
\membersection{wxStringOutputStream::GetString}\label{wxstringoutputstreamgetstring}

View File

@ -68,6 +68,7 @@ public:
const wxString& GetString() const { return *m_str; }
protected:
virtual off_t OnSysTell() const;
virtual size_t OnSysWrite(const void *buffer, size_t size);
private:

View File

@ -101,6 +101,15 @@ size_t wxStringInputStream::OnSysRead(void *buffer, size_t size)
// wxStringOutputStream implementation
// ============================================================================
// ----------------------------------------------------------------------------
// seek/tell
// ----------------------------------------------------------------------------
off_t wxStringOutputStream::OnSysTell() const
{
return wx_static_cast(off_t, m_pos);
}
// ----------------------------------------------------------------------------
// actual IO
// ----------------------------------------------------------------------------
@ -112,10 +121,13 @@ size_t wxStringOutputStream::OnSysWrite(const void *buffer, size_t size)
const wxChar *p = wx_static_cast(const wxChar *, buffer);
m_str->Append(wxString(p, p + len + 1));
m_str->Append(wxString(p, p + len));
// return number of bytes actually written
return len*sizeof(wxChar);
len *= sizeof(wxChar);
m_pos += len;
return len;
}
#endif // wxUSE_STREAMS