From a5ea75bc6a7e10e71d23ed4a0899bba30c2f5077 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 19 Sep 2004 21:58:50 +0000 Subject: [PATCH] added wxStringOutputStream::TellO(); fixed bugs in OnSysWrite() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29226 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/latex/wx/sostream.tex | 8 +++++++- include/wx/sstream.h | 1 + src/common/sstream.cpp | 16 ++++++++++++++-- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/docs/latex/wx/sostream.tex b/docs/latex/wx/sostream.tex index 1f64d55d16..aba23e7149 100644 --- a/docs/latex/wx/sostream.tex +++ b/docs/latex/wx/sostream.tex @@ -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} diff --git a/include/wx/sstream.h b/include/wx/sstream.h index 0bc18690ed..e188c1a00c 100644 --- a/include/wx/sstream.h +++ b/include/wx/sstream.h @@ -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: diff --git a/src/common/sstream.cpp b/src/common/sstream.cpp index de3496327e..1a87534dc3 100644 --- a/src/common/sstream.cpp +++ b/src/common/sstream.cpp @@ -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 -- 2.45.2