-wxVariant::wxVariant(const wxArrayString& val, const wxString& name) // Strings
-{
- m_data = new wxVariantDataArrayString(val);
- m_name = name;
-}
-
-wxVariant::wxVariant(const wxVariant& variant)
- : wxObject()
-{
- 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();
- }
-
- variant.GetData()->Copy(* GetData());
-
- m_name = variant.m_name;
-}
-
-// 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