X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4004775e5a0c2da5453668201a4a984b6543d061..333e57d578e9e0fb6555452b5a53698ffd85ee69:/include/wx/sstream.h diff --git a/include/wx/sstream.h b/include/wx/sstream.h index 0d44a30d82..1b2cbd0897 100644 --- a/include/wx/sstream.h +++ b/include/wx/sstream.h @@ -25,13 +25,9 @@ class WXDLLIMPEXP_BASE wxStringInputStream : public wxInputStream public: // ctor associates the stream with the given string which makes a copy of // it - wxStringInputStream(const wxString& s) - : m_str(s) - { - m_pos = 0; - } + wxStringInputStream(const wxString& s); - virtual size_t GetSize() const { return m_str.length(); } + virtual wxFileOffset GetLength() const; protected: virtual wxFileOffset OnSysSeek(wxFileOffset ofs, wxSeekMode mode); @@ -39,13 +35,18 @@ protected: virtual size_t OnSysRead(void *buffer, size_t size); private: - // the string we're reading from + // the string that was passed in the ctor wxString m_str; + // the buffer we're reading from + wxCharBuffer m_buf; + + // length of the buffer we're reading from + size_t m_len; + // position in the stream in bytes, *not* in chars size_t m_pos; - DECLARE_NO_COPY_CLASS(wxStringInputStream) }; @@ -59,6 +60,9 @@ 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 { m_str = pString ? pString : &m_strInternal; m_pos = m_str->length() / sizeof(wxChar); @@ -81,6 +85,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 + +#if wxUSE_UNICODE_WCHAR + // unconverted data from the last call to OnSysWrite() + wxMemoryBuffer m_unconv; +#endif // wxUSE_UNICODE_WCHAR DECLARE_NO_COPY_CLASS(wxStringOutputStream) };