-wxVariant::wxVariant(const wxArrayString& val, const wxString& name) // Strings
-{
- m_data = new wxVariantDataArrayString(val);
- m_name = name;
-}
-
-wxVariant::wxVariant(const wxVariant& variant)
-{
- if (!variant.IsNull())
- {
- m_data = (wxVariantData*) variant.GetData()->GetClassInfo()->CreateObject();
- variant.m_data->Copy(*m_data);
- }
- else
- m_data = (wxVariantData*) NULL;
- m_name = variant.m_name;
-}
-
-wxVariant::wxVariant(wxVariantData* data, const wxString& name) // User-defined data
-{
- m_data = data;
- m_name = name;
-}
-
-wxVariant::~wxVariant()
-{
- delete m_data;
-}
-
-
-// Make NULL (i.e. delete the data)
-void wxVariant::MakeNull()
-{
- delete m_data;
- m_data = NULL;
-}
-
-// Generic operators
-// Assignment
-void wxVariant::operator= (const wxVariant& variant)
-{
- if (variant.IsNull())
- {
- MakeNull();
- return;
- }
-
- if (IsNull() || (GetType() != variant.GetType()))
- {
- if (m_data)
- delete m_data;
- m_data = (wxVariantData*) variant.GetData()->GetClassInfo()->CreateObject();
- }
-// GetData()->Copy(* variant.GetData());
- variant.GetData()->Copy(* GetData());
-}
-
-// Assignment using data, e.g.
-// myVariant = new wxStringVariantData("hello")
-void wxVariant::operator= (wxVariantData* variantData)
-{
- MakeNull();
- m_data = variantData;
-}
-
-bool wxVariant::operator== (const wxVariant& variant) const
-{
- if (IsNull() || variant.IsNull())
- return (IsNull() == variant.IsNull());
-
- return (GetData()->Eq(* variant.GetData()));
-}
-
-bool wxVariant::operator!= (const wxVariant& variant) const
-{
- return (!(*this == variant));
-}
-
-
-// Specific operators
-bool wxVariant::operator== (double value) const
-{
- double thisValue;
- if (!Convert(&thisValue))
- return FALSE;
- else
- return (value == thisValue);
-}
-
-bool wxVariant::operator!= (double value) const
-{
- return (!((*this) == value));
-}
-
-void wxVariant::operator= (double value)
-{
- if (GetType() == wxT("double"))
- {
- ((wxVariantDataReal*)GetData())->SetValue(value);
- }
- else
- {
- if (m_data)
- delete m_data;
- m_data = new wxVariantDataReal(value);
- }
-}
-
-bool wxVariant::operator== (long value) const
-{
- long thisValue;
- if (!Convert(&thisValue))
- return FALSE;
- else
- return (value == thisValue);
-}
-
-bool wxVariant::operator!= (long value) const
-{
- return (!((*this) == value));
-}
-
-void wxVariant::operator= (long value)
-{
- if (GetType() == wxT("long"))
- {
- ((wxVariantDataLong*)GetData())->SetValue(value);
- }
- else
- {
- if (m_data)
- delete m_data;
- m_data = new wxVariantDataLong(value);
- }
-}
-
-bool wxVariant::operator== (char value) const
-{
- char thisValue;
- if (!Convert(&thisValue))
- return FALSE;
- else
- return (value == thisValue);
-}
-
-bool wxVariant::operator!= (char value) const
-{
- return (!((*this) == value));
-}
-
-void wxVariant::operator= (char value)
-{
- if (GetType() == wxT("char"))
- {
- ((wxVariantDataChar*)GetData())->SetValue(value);
- }
- else
- {
- if (m_data)
- delete m_data;
- m_data = new wxVariantDataChar(value);
- }
-}
-
-#ifdef HAVE_BOOL
-bool wxVariant::operator== (bool value) const
-{
- bool thisValue;
- if (!Convert(&thisValue))
- return FALSE;
- else
- return (value == thisValue);
-}
-
-bool wxVariant::operator!= (bool value) const
-{
- return (!((*this) == value));
-}
-
-void wxVariant::operator= (bool value)
-{
- if (GetType() == wxT("bool"))
- {
- ((wxVariantDataBool*)GetData())->SetValue(value);
- }
- else
- {
- if (m_data)
- delete m_data;
- m_data = new wxVariantDataBool(value);
- }
-}
-#endif // HAVE_BOOL
-
-bool wxVariant::operator== (const wxString& value) const
-{
- wxString thisValue;
- if (!Convert(&thisValue))
- return FALSE;
-
- return value == thisValue;
-}
-
-bool wxVariant::operator!= (const wxString& value) const
-{
- return (!((*this) == value));
-}
-
-void wxVariant::operator= (const wxString& value)
-{
- if (GetType() == wxT("string"))
- {
- ((wxVariantDataString*)GetData())->SetValue(value);
- }
- else
- {
- if (m_data)
- delete m_data;
- m_data = new wxVariantDataString(value);
- }
-}
-
-void wxVariant::operator= (const wxChar* value)
-{
- if (GetType() == wxT("string"))
- {
- ((wxVariantDataString*)GetData())->SetValue(wxString(value));
- }
- else
- {
- if (m_data)
- delete m_data;
- m_data = new wxVariantDataString(wxString(value));
- }
-}
-
-bool wxVariant::operator== (const wxStringList& value) const
-{
- wxASSERT_MSG( (GetType() == wxT("stringlist")), wxT("Invalid type for == operator") );
-
- wxVariantDataStringList other(value);
- return (m_data->Eq(other));
-}
-
-bool wxVariant::operator!= (const wxStringList& value) const
-{
- return (!((*this) == value));
-}
-
-void wxVariant::operator= (const wxStringList& value)
-{
- if (GetType() == wxT("stringlist"))
- {
- ((wxVariantDataStringList*)GetData())->SetValue(value);
- }
- else
- {
- if (m_data)
- delete m_data;
- m_data = new wxVariantDataStringList(value);
- }
-}
-
-bool wxVariant::operator== (const wxList& value) const