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:
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
This class implements an output stream which writes data either to a
|
This class implements an output stream which writes data either to a
|
||||||
user-provided or internally allocated string. Note that currently this stream
|
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}
|
\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
|
Otherwise, an internal string is used for the data written to this stream, use
|
||||||
\helpref{GetString()}{wxstringoutputstreamgetstring} to get access to it.
|
\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}
|
\membersection{wxStringOutputStream::GetString}\label{wxstringoutputstreamgetstring}
|
||||||
|
|
||||||
|
@@ -68,6 +68,7 @@ public:
|
|||||||
const wxString& GetString() const { return *m_str; }
|
const wxString& GetString() const { return *m_str; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual off_t OnSysTell() const;
|
||||||
virtual size_t OnSysWrite(const void *buffer, size_t size);
|
virtual size_t OnSysWrite(const void *buffer, size_t size);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@@ -101,6 +101,15 @@ size_t wxStringInputStream::OnSysRead(void *buffer, size_t size)
|
|||||||
// wxStringOutputStream implementation
|
// wxStringOutputStream implementation
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
// seek/tell
|
||||||
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
off_t wxStringOutputStream::OnSysTell() const
|
||||||
|
{
|
||||||
|
return wx_static_cast(off_t, m_pos);
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// actual IO
|
// 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);
|
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 number of bytes actually written
|
||||||
return len*sizeof(wxChar);
|
len *= sizeof(wxChar);
|
||||||
|
m_pos += len;
|
||||||
|
|
||||||
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // wxUSE_STREAMS
|
#endif // wxUSE_STREAMS
|
||||||
|
Reference in New Issue
Block a user