X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c5d99d7b5c4afa4fba509d751937d5e6cb7b2703..220bfe1596238999c60b810fcf0b86b74ed37e0b:/include/wx/sstream.h diff --git a/include/wx/sstream.h b/include/wx/sstream.h index b264c67021..8b202b0045 100644 --- a/include/wx/sstream.h +++ b/include/wx/sstream.h @@ -26,7 +26,6 @@ public: // ctor associates the stream with the given string which makes a copy of // it wxStringInputStream(const wxString& s); - virtual ~wxStringInputStream(); virtual wxFileOffset GetLength() const; @@ -40,7 +39,7 @@ private: wxString m_str; // the buffer we're reading from - char* m_buf; + wxCharBuffer m_buf; // length of the buffer we're reading from size_t m_len; @@ -48,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); }; // ---------------------------------------------------------------------------- @@ -60,7 +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) + // + // 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_WCHAR + , m_unconv(0) +#endif // wxUSE_UNICODE_WCHAR { m_str = pString ? pString : &m_strInternal; m_pos = m_str->length() / sizeof(wxChar); @@ -83,10 +90,17 @@ private: // position in the stream in bytes, *not* in chars size_t m_pos; - // string encoding converter (UTF8 is the standard) - wxMBConvUTF8 m_conv; + // 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; - DECLARE_NO_COPY_CLASS(wxStringOutputStream) +#if wxUSE_UNICODE_WCHAR + // unconverted data from the last call to OnSysWrite() + wxMemoryBuffer m_unconv; +#endif // wxUSE_UNICODE_WCHAR + + wxDECLARE_NO_COPY_CLASS(wxStringOutputStream); }; #endif // wxUSE_STREAMS