+// ----------------------------------------------------------------------------
+// construction/destruction
+// ----------------------------------------------------------------------------
+
+wxStringInputStream::wxStringInputStream(const wxString& s)
+#if wxUSE_UNICODE
+ : m_str(s), m_buf(wxMBConvUTF8().cWX2MB(s).release()), m_len(strlen(m_buf))
+#else
+ : m_str(s), m_buf((char*)s.c_str()), m_len(s.length())
+#endif
+{
+#if wxUSE_UNICODE
+ wxASSERT_MSG(m_buf != NULL, _T("Could not convert string to UTF8!"));
+#endif
+ m_pos = 0;
+}
+
+wxStringInputStream::~wxStringInputStream()
+{
+#if wxUSE_UNICODE
+ // Note: wx[W]CharBuffer uses malloc()/free()
+ free(m_buf);
+#endif
+}
+
+// ----------------------------------------------------------------------------
+// getlength
+// ----------------------------------------------------------------------------
+
+wxFileOffset wxStringInputStream::GetLength() const
+{
+ return m_len;
+}
+