]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/variant.cpp
Whole lot of stuff for new wxFileDialog
[wxWidgets.git] / src / common / variant.cpp
index bea0193b8e6b15b2069687e8f1c6a3b5f5835883..5b7126fd5e52fc2846f9c464d6e956bc8c76d9be 100644 (file)
     #pragma hdrstop
 #endif
 
-#if wxUSE_IOSTREAMH
+#if wxUSE_IOSTREAMH && wxUSE_STD_IOSTREAM
 #   include <fstream.h>
 #else
 #   include <fstream>
 #endif
 
+#if wxUSE_STREAMS
 #include "wx/stream.h"
+#include "wx/txtstrm.h"
+#endif
+
 #include "wx/string.h"
 #include "wx/variant.h"
 
@@ -51,9 +55,13 @@ public:
 
     virtual void Copy(wxVariantData& data);
     virtual bool Eq(wxVariantData& data) const;
+#if wxUSE_STD_IOSTREAM
     virtual bool Write(ostream& str) const;
+#endif
     virtual bool Write(wxString& str) const;
+#if wxUSE_STD_IOSTREAM
     virtual bool Read(istream& str);
+#endif
     virtual bool Read(wxString& str);
     virtual wxString GetType() const { return _T("list"); };
 
@@ -135,6 +143,7 @@ bool wxVariantDataList::Eq(wxVariantData& data) const
     return TRUE;
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataList::Write(ostream& str) const
 {
     wxString s;
@@ -142,6 +151,7 @@ bool wxVariantDataList::Write(ostream& str) const
     str << (const char*) s.mb_str();
     return TRUE;
 }
+#endif
 
 bool wxVariantDataList::Write(wxString& str) const
 {
@@ -160,12 +170,14 @@ bool wxVariantDataList::Write(wxString& str) const
     return TRUE;
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataList::Read(istream& WXUNUSED(str))
 {
     wxFAIL_MSG(_T("Unimplemented"));
     // TODO
     return FALSE;
 }
+#endif
 
 bool wxVariantDataList::Read(wxString& WXUNUSED(str))
 {
@@ -190,9 +202,13 @@ public:
 
     virtual void Copy(wxVariantData& data);
     virtual bool Eq(wxVariantData& data) const;
+#if wxUSE_STD_IOSTREAM
     virtual bool Write(ostream& str) const;
+#endif
     virtual bool Write(wxString& str) const;
+#if wxUSE_STD_IOSTREAM
     virtual bool Read(istream& str);
+#endif
     virtual bool Read(wxString& str);
     virtual wxString GetType() const { return _T("stringlist"); };
 
@@ -236,6 +252,7 @@ bool wxVariantDataStringList::Eq(wxVariantData& data) const
     return TRUE;
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataStringList::Write(ostream& str) const
 {
     wxString s;
@@ -243,6 +260,7 @@ bool wxVariantDataStringList::Write(ostream& str) const
     str << (const char*) s.mb_str();
     return TRUE;
 }
+#endif
 
 bool wxVariantDataStringList::Write(wxString& str) const
 {
@@ -260,12 +278,14 @@ bool wxVariantDataStringList::Write(wxString& str) const
     return TRUE;
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataStringList::Read(istream& WXUNUSED(str))
 {
     wxFAIL_MSG(_T("Unimplemented"));
     // TODO
     return FALSE;
 }
+#endif
 
 bool wxVariantDataStringList::Read(wxString& WXUNUSED(str))
 {
@@ -293,9 +313,10 @@ public:
 
     virtual bool Read(wxString& str);
     virtual bool Write(wxString& str) const;
+#if wxUSE_STD_IOSTREAM
     virtual bool Read(istream& str);
     virtual bool Write(ostream& str) const;
-
+#endif
 #if wxUSE_STREAMS
     virtual bool Read(wxInputStream& str);
     virtual bool Write(wxOutputStream &str) const;
@@ -327,6 +348,7 @@ bool wxVariantDataLong::Eq(wxVariantData& data) const
     return (otherData.m_value == m_value);
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataLong::Write(ostream& str) const
 {
     wxString s;
@@ -334,6 +356,7 @@ bool wxVariantDataLong::Write(ostream& str) const
     str << (const char*) s.mb_str();
     return TRUE;
 }
+#endif
 
 bool wxVariantDataLong::Write(wxString& str) const
 {
@@ -341,22 +364,27 @@ bool wxVariantDataLong::Write(wxString& str) const
     return TRUE;
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataLong::Read(istream& str)
 {
     str >> m_value;
     return TRUE;
 }
+#endif
 
 #if wxUSE_STREAMS
 bool wxVariantDataLong::Write(wxOutputStream& str) const
 {
-    str << m_value;
+    wxTextOutputStream s(str);
+
+    s.Write32(m_value);
     return TRUE;
 }
 
 bool wxVariantDataLong::Read(wxInputStream& str)
 {
-   str >> m_value;
+   wxTextInputStream s(str);
+   m_value = s.Read32();
    return TRUE;
 }
 #endif // wxUSE_STREAMS
@@ -384,9 +412,13 @@ public:
     virtual void Copy(wxVariantData& data);
     virtual bool Eq(wxVariantData& data) const;
     virtual bool Read(wxString& str);
+#if wxUSE_STD_IOSTREAM
     virtual bool Write(ostream& str) const;
+#endif
     virtual bool Write(wxString& str) const;
+#if wxUSE_STD_IOSTREAM
     virtual bool Read(istream& str);
+#endif
 #if wxUSE_STREAMS
     virtual bool Read(wxInputStream& str);
     virtual bool Write(wxOutputStream &str) const;
@@ -417,6 +449,7 @@ bool wxVariantDataReal::Eq(wxVariantData& data) const
     return (otherData.m_value == m_value);
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataReal::Write(ostream& str) const
 {
     wxString s;
@@ -424,6 +457,7 @@ bool wxVariantDataReal::Write(ostream& str) const
     str << (const char*) s.mb_str();
     return TRUE;
 }
+#endif
 
 bool wxVariantDataReal::Write(wxString& str) const
 {
@@ -431,22 +465,26 @@ bool wxVariantDataReal::Write(wxString& str) const
     return TRUE;
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataReal::Read(istream& str)
 {
     str >> m_value;
     return TRUE;
 }
+#endif
 
 #if wxUSE_STREAMS
 bool wxVariantDataReal::Write(wxOutputStream& str) const
 {
-    str << m_value;
+    wxTextOutputStream s(str);
+    s.WriteDouble((double)m_value);
     return TRUE;
 }
 
 bool wxVariantDataReal::Read(wxInputStream& str)
 {
-    str >> (float&)m_value;
+    wxTextInputStream s(str);
+    m_value = (float)s.ReadDouble();
     return TRUE;
 }
 #endif // wxUSE_STREAMS
@@ -474,10 +512,14 @@ public:
 
     virtual void Copy(wxVariantData& data);
     virtual bool Eq(wxVariantData& data) const;
+#if wxUSE_STD_IOSTREAM
     virtual bool Write(ostream& str) const;
+#endif
     virtual bool Write(wxString& str) const;
     virtual bool Read(wxString& str);
+#if wxUSE_STD_IOSTREAM
     virtual bool Read(istream& str);
+#endif
 #if wxUSE_STREAMS
     virtual bool Read(wxInputStream& str);
     virtual bool Write(wxOutputStream& str) const;
@@ -508,6 +550,7 @@ bool wxVariantDataBool::Eq(wxVariantData& data) const
     return (otherData.m_value == m_value);
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataBool::Write(ostream& str) const
 {
     wxString s;
@@ -515,6 +558,7 @@ bool wxVariantDataBool::Write(ostream& str) const
     str << (const char*) s.mb_str();
     return TRUE;
 }
+#endif
 
 bool wxVariantDataBool::Write(wxString& str) const
 {
@@ -522,23 +566,29 @@ bool wxVariantDataBool::Write(wxString& str) const
     return TRUE;
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataBool::Read(istream& WXUNUSED(str))
 {
     wxFAIL_MSG(_T("Unimplemented"));
 //    str >> (long) m_value;
     return FALSE;
 }
+#endif
 
 #if wxUSE_STREAMS
 bool wxVariantDataBool::Write(wxOutputStream& str) const
 {
-    str << (char)m_value;
+    wxTextOutputStream s(str);
+
+    s.Write8(m_value); 
     return TRUE;
 }
 
 bool wxVariantDataBool::Read(wxInputStream& str)
 {
-    str >> (char&)m_value;
+    wxTextInputStream s(str);
+
+    m_value = s.Read8() != 0;
     return TRUE;
 }
 #endif // wxUSE_STREAMS
@@ -566,8 +616,10 @@ public:
 
     virtual void Copy(wxVariantData& data);
     virtual bool Eq(wxVariantData& data) const;
+#if wxUSE_STD_IOSTREAM
     virtual bool Read(istream& str);
     virtual bool Write(ostream& str) const;
+#endif
     virtual bool Read(wxString& str);
     virtual bool Write(wxString& str) const;
 #if wxUSE_STREAMS
@@ -600,6 +652,7 @@ bool wxVariantDataChar::Eq(wxVariantData& data) const
     return (otherData.m_value == m_value);
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataChar::Write(ostream& str) const
 {
     wxString s;
@@ -607,6 +660,7 @@ bool wxVariantDataChar::Write(ostream& str) const
     str << (const char*) s.mb_str();
     return TRUE;
 }
+#endif
 
 bool wxVariantDataChar::Write(wxString& str) const
 {
@@ -614,23 +668,29 @@ bool wxVariantDataChar::Write(wxString& str) const
     return TRUE;
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataChar::Read(istream& WXUNUSED(str))
 {
     wxFAIL_MSG(_T("Unimplemented"));
 //    str >> m_value;
     return FALSE;
 }
+#endif
 
 #if wxUSE_STREAMS
 bool wxVariantDataChar::Write(wxOutputStream& str) const
 {
-    str << m_value;
+    wxTextOutputStream s(str);
+
+    s.Write8(m_value);
     return TRUE;
 }
 
 bool wxVariantDataChar::Read(wxInputStream& str)
 {
-    str >> m_value;
+    wxTextInputStream s(str);
+
+    m_value = s.Read8();
     return TRUE;
 }
 #endif // wxUSE_STREAMS
@@ -666,10 +726,14 @@ public:
 
     virtual void Copy(wxVariantData& data);
     virtual bool Eq(wxVariantData& data) const;
+#if wxUSE_STD_IOSTREAM
     virtual bool Write(ostream& str) const;
+#endif
     virtual bool Read(wxString& str);
     virtual bool Write(wxString& str) const;
+#if wxUSE_STD_IOSTREAM
     virtual bool Read(istream& str);
+#endif
 #if wxUSE_STREAMS
     virtual bool Read(wxInputStream& str);
     virtual bool Write(wxOutputStream& str) const;
@@ -698,11 +762,13 @@ bool wxVariantDataString::Eq(wxVariantData& data) const
     return (otherData.m_value == m_value);
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataString::Write(ostream& str) const
 {
     str << (const char*) m_value.mb_str();
     return TRUE;
 }
+#endif
 
 bool wxVariantDataString::Write(wxString& str) const
 {
@@ -710,23 +776,28 @@ bool wxVariantDataString::Write(wxString& str) const
     return TRUE;
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataString::Read(istream& str)
 {
     str >> m_value;
     return TRUE;
 }
+#endif
 
 #if wxUSE_STREAMS
 bool wxVariantDataString::Write(wxOutputStream& str) const
 {
   // why doesn't wxOutputStream::operator<< take "const wxString&"
-    str << (const char*) m_value.mb_str();
+    wxTextOutputStream s(str);
+    s.WriteString(m_value);
     return TRUE;
 }
 
 bool wxVariantDataString::Read(wxInputStream& str)
 {
-    str >> m_value;
+    wxTextInputStream s(str);
+
+    m_value = s.ReadString();
     return TRUE;
 }
 #endif // wxUSE_STREAMS
@@ -761,9 +832,13 @@ public:
 
     virtual void Copy(wxVariantData& data);
     virtual bool Eq(wxVariantData& data) const;
+#if wxUSE_STD_IOSTREAM
     virtual bool Write(ostream& str) const;
+#endif
     virtual bool Write(wxString& str) const;
+#if wxUSE_STD_IOSTREAM
     virtual bool Read(istream& str);
+#endif
     virtual bool Read(wxString& str);
     virtual wxString GetType() const { return _T("time"); };
        virtual wxVariantData* Clone() { return new wxVariantDataTime; }
@@ -792,6 +867,7 @@ bool wxVariantDataTime::Eq(wxVariantData& data) const
     return (otherData.m_value == m_value);
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataTime::Write(ostream& str) const
 {
     wxString s;
@@ -799,6 +875,7 @@ bool wxVariantDataTime::Write(ostream& str) const
     str << (const char*) s.mb_str();
     return TRUE;
 }
+#endif
 
 bool wxVariantDataTime::Write(wxString& str) const
 {
@@ -807,11 +884,13 @@ bool wxVariantDataTime::Write(wxString& str) const
     return TRUE;
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataTime::Read(istream& WXUNUSED(str))
 {
     // Not implemented
     return FALSE;
 }
+#endif
 
 bool wxVariantDataTime::Read(wxString& WXUNUSED(str))
 {
@@ -835,9 +914,13 @@ public:
 
     virtual void Copy(wxVariantData& data);
     virtual bool Eq(wxVariantData& data) const;
+#if wxUSE_STD_IOSTREAM
     virtual bool Write(ostream& str) const;
+#endif
     virtual bool Write(wxString& str) const;
+#if wxUSE_STD_IOSTREAM
     virtual bool Read(istream& str);
+#endif
     virtual bool Read(wxString& str);
     virtual wxString GetType() const { return _T("date"); };
        virtual wxVariantData* Clone() { return new wxVariantDataDate; }
@@ -866,6 +949,7 @@ bool wxVariantDataDate::Eq(wxVariantData& data) const
     return (otherData.m_value == m_value);
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataDate::Write(ostream& str) const
 {
     wxString s;
@@ -873,6 +957,7 @@ bool wxVariantDataDate::Write(ostream& str) const
     str << (const char*) s.mb_str();
     return TRUE;
 }
+#endif
 
 bool wxVariantDataDate::Write(wxString& str) const
 {
@@ -880,11 +965,13 @@ bool wxVariantDataDate::Write(wxString& str) const
     return TRUE;
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataDate::Read(istream& WXUNUSED(str))
 {
     // Not implemented
     return FALSE;
 }
+#endif
 
 bool wxVariantDataDate::Read(wxString& WXUNUSED(str))
 {
@@ -910,9 +997,13 @@ public:
 
     virtual void Copy(wxVariantData& data);
     virtual bool Eq(wxVariantData& data) const;
+#if wxUSE_STD_IOSTREAM
     virtual bool Write(ostream& str) const;
+#endif
     virtual bool Write(wxString& str) const;
+#if wxUSE_STD_IOSTREAM
     virtual bool Read(istream& str);
+#endif
     virtual bool Read(wxString& str);
     virtual wxString GetType() const { return _T("void*"); };
        virtual wxVariantData* Clone() { return new wxVariantDataVoidPtr; }
@@ -941,6 +1032,7 @@ bool wxVariantDataVoidPtr::Eq(wxVariantData& data) const
     return (otherData.m_value == m_value);
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataVoidPtr::Write(ostream& str) const
 {
     wxString s;
@@ -948,6 +1040,7 @@ bool wxVariantDataVoidPtr::Write(ostream& str) const
     str << (const char*) s.mb_str();
     return TRUE;
 }
+#endif
 
 bool wxVariantDataVoidPtr::Write(wxString& str) const
 {
@@ -955,11 +1048,13 @@ bool wxVariantDataVoidPtr::Write(wxString& str) const
     return TRUE;
 }
 
+#if wxUSE_STD_IOSTREAM
 bool wxVariantDataVoidPtr::Read(istream& WXUNUSED(str))
 {
     // Not implemented
     return FALSE;
 }
+#endif
 
 bool wxVariantDataVoidPtr::Read(wxString& WXUNUSED(str))
 {