]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/datstrm.cpp
added our own implementation of strto[u]ll() if the system doesn't have one (patch...
[wxWidgets.git] / src / common / datstrm.cpp
index 67a2e458050716b9e217faccfdafc981671df2b2..50e4eb4b2e6dc2b81e1d0d76c54523258481e726 100644 (file)
 #if wxUSE_STREAMS
 
 #include "wx/datstrm.h"
-#include "wx/math.h"
+
+#ifndef WX_PRECOMP
+    #include "wx/math.h"
+#endif //WX_PRECOMP
 
 // ---------------------------------------------------------------------------
 // wxDataInputStream
@@ -27,7 +30,7 @@
 
 #if wxUSE_UNICODE
 wxDataInputStream::wxDataInputStream(wxInputStream& s, const wxMBConv& conv)
-  : m_input(&s), m_be_order(false), m_conv(conv)
+  : m_input(&s), m_be_order(false), m_conv(conv.Clone())
 #else
 wxDataInputStream::wxDataInputStream(wxInputStream& s)
   : m_input(&s), m_be_order(false)
@@ -35,6 +38,13 @@ wxDataInputStream::wxDataInputStream(wxInputStream& s)
 {
 }
 
+wxDataInputStream::~wxDataInputStream()
+{
+#if wxUSE_UNICODE
+    delete m_conv;
+#endif // wxUSE_UNICODE
+}
+
 #if wxHAS_INT64
 wxUint64 wxDataInputStream::Read64()
 {
@@ -100,7 +110,7 @@ wxString wxDataInputStream::ReadString()
     wxCharBuffer tmp(len + 1);
     m_input->Read(tmp.data(), len);
     tmp.data()[len] = '\0';
-    wxString ret(m_conv.cMB2WX(tmp.data()));
+    wxString ret(m_conv->cMB2WX(tmp.data()));
 #else
     wxString ret;
     m_input->Read( wxStringBuffer(ret, len), len);
@@ -446,7 +456,7 @@ wxDataInputStream& wxDataInputStream::operator>>(float& f)
 
 #if wxUSE_UNICODE
 wxDataOutputStream::wxDataOutputStream(wxOutputStream& s, const wxMBConv& conv)
-  : m_output(&s), m_be_order(false), m_conv(conv)
+  : m_output(&s), m_be_order(false), m_conv(conv.Clone())
 #else
 wxDataOutputStream::wxDataOutputStream(wxOutputStream& s)
   : m_output(&s), m_be_order(false)
@@ -454,6 +464,13 @@ wxDataOutputStream::wxDataOutputStream(wxOutputStream& s)
 {
 }
 
+wxDataOutputStream::~wxDataOutputStream()
+{
+#if wxUSE_UNICODE
+    delete m_conv;
+#endif // wxUSE_UNICODE
+}
+
 #if wxHAS_INT64
 void wxDataOutputStream::Write64(wxUint64 i)
 {
@@ -497,7 +514,7 @@ void wxDataOutputStream::Write8(wxUint8 i)
 void wxDataOutputStream::WriteString(const wxString& string)
 {
 #if wxUSE_UNICODE
-  const wxWX2MBbuf buf = string.mb_str(m_conv);
+  const wxWX2MBbuf buf = string.mb_str(*m_conv);
 #else
   const wxWX2MBbuf buf = string.mb_str();
 #endif