X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8650108199bf799f21e29811cddaefd579c98c88..e91e1e3d5cab263883c1cee1689c898b8f7c4ecd:/include/wx/sstream.h diff --git a/include/wx/sstream.h b/include/wx/sstream.h index 1b2cbd0897..b0b2290fbc 100644 --- a/include/wx/sstream.h +++ b/include/wx/sstream.h @@ -4,7 +4,6 @@ // Author: Vadim Zeitlin // Modified by: // Created: 2004-09-19 -// RCS-ID: $Id$ // Copyright: (c) 2004 Vadim Zeitlin // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// @@ -28,6 +27,7 @@ public: wxStringInputStream(const wxString& s); virtual wxFileOffset GetLength() const; + virtual bool IsSeekable() const { return true; } protected: virtual wxFileOffset OnSysSeek(wxFileOffset ofs, wxSeekMode mode); @@ -47,7 +47,7 @@ private: // position in the stream in bytes, *not* in chars size_t m_pos; - DECLARE_NO_COPY_CLASS(wxStringInputStream) + wxDECLARE_NO_COPY_CLASS(wxStringInputStream); }; // ---------------------------------------------------------------------------- @@ -59,10 +59,15 @@ class WXDLLIMPEXP_BASE wxStringOutputStream : public wxOutputStream public: // The stream will write data either to the provided string or to an // internal string which can be retrieved using GetString() - wxStringOutputStream(wxString *pString = NULL) -#if wxUSE_UNICODE_WCHAR - : m_unconv(0) -#endif // wxUSE_UNICODE_WCHAR + // + // Note that the conversion object should have the life time greater than + // this stream. + wxStringOutputStream(wxString *pString = NULL, + wxMBConv& conv = wxConvUTF8) + : m_conv(conv) +#if wxUSE_UNICODE + , m_unconv(0) +#endif // wxUSE_UNICODE { m_str = pString ? pString : &m_strInternal; m_pos = m_str->length() / sizeof(wxChar); @@ -71,6 +76,8 @@ public: // get the string containing current output const wxString& GetString() const { return *m_str; } + virtual bool IsSeekable() const { return true; } + protected: virtual wxFileOffset OnSysTell() const; virtual size_t OnSysWrite(const void *buffer, size_t size); @@ -85,19 +92,17 @@ private: // position in the stream in bytes, *not* in chars size_t m_pos; -#if wxUSE_WCHAR_T - // string encoding converter (UTF8 is the standard) - wxMBConvUTF8 m_conv; -#else - wxMBConv m_conv; -#endif + // converter to use: notice that with the default UTF-8 one the input + // stream must contain valid UTF-8 data, use wxConvISO8859_1 to work with + // arbitrary 8 bit data + wxMBConv& m_conv; -#if wxUSE_UNICODE_WCHAR +#if wxUSE_UNICODE // unconverted data from the last call to OnSysWrite() wxMemoryBuffer m_unconv; -#endif // wxUSE_UNICODE_WCHAR +#endif // wxUSE_UNICODE - DECLARE_NO_COPY_CLASS(wxStringOutputStream) + wxDECLARE_NO_COPY_CLASS(wxStringOutputStream); }; #endif // wxUSE_STREAMS