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 wxFileOffset GetLength() const;
protected:
- virtual size_t GetSize() const { return m_str.length(); }
- virtual off_t OnSysSeek(off_t ofs, wxSeekMode mode);
- virtual off_t OnSysTell() const;
+ virtual wxFileOffset OnSysSeek(wxFileOffset ofs, wxSeekMode mode);
+ virtual wxFileOffset OnSysTell() const;
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)
};
// 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);
const wxString& GetString() const { return *m_str; }
protected:
+ virtual wxFileOffset OnSysTell() const;
virtual size_t OnSysWrite(const void *buffer, size_t size);
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)
};