+ wxASSERT_MSG( (data.GetType() == wxS("longlong")),
+ "wxVariantDataLongLong::Eq: argument mismatch" );
+
+ wxVariantDataLongLong& otherData = (wxVariantDataLongLong&) data;
+
+ return (otherData.m_value == m_value);
+}
+
+#if wxUSE_STD_IOSTREAM
+bool wxVariantDataLongLong::Write(wxSTD ostream& str) const
+{
+ wxString s;
+ Write(s);
+ str << (const char*) s.mb_str();
+ return true;
+}
+#endif
+
+bool wxVariantDataLongLong::Write(wxString& str) const
+{
+#ifdef wxLongLong_t
+ str.Printf(wxS("%lld"), m_value.GetValue());
+ return true;
+#else
+ return false;
+#endif
+}
+
+#if wxUSE_STD_IOSTREAM
+bool wxVariantDataLongLong::Read(wxSTD istream& WXUNUSED(str))
+{
+ wxFAIL_MSG(wxS("Unimplemented"));
+ return false;
+}
+#endif
+
+#if wxUSE_STREAMS
+bool wxVariantDataLongLong::Write(wxOutputStream& str) const
+{
+ wxTextOutputStream s(str);
+ s.Write32(m_value.GetLo());
+ s.Write32(m_value.GetHi());
+ return true;
+}
+
+bool wxVariantDataLongLong::Read(wxInputStream& str)
+{
+ wxTextInputStream s(str);
+ unsigned long lo = s.Read32();
+ long hi = s.Read32();
+ m_value = wxLongLong(hi, lo);
+ return true;
+}
+#endif // wxUSE_STREAMS
+
+bool wxVariantDataLongLong::Read(wxString& str)
+{
+#ifdef wxLongLong_t
+ wxLongLong_t value_t;
+ if ( !str.ToLongLong(&value_t) )
+ return false;
+ m_value = value_t;
+ return true;
+#else
+ return false;
+#endif
+}
+
+// wxVariant
+
+wxVariant::wxVariant(wxLongLong val, const wxString& name)
+{
+ m_refData = new wxVariantDataLongLong(val);
+ m_name = name;
+}
+
+bool wxVariant::operator==(wxLongLong value) const
+{
+ wxLongLong thisValue;
+ if ( !Convert(&thisValue) )
+ return false;