/**
Assignment operators.
*/
+ template<typename T>
+ wxAny& operator=(const T &value)
+ {
+ m_type->DeleteValue(m_buffer);
+ m_type = wxAnyValueTypeImpl<T>::sm_instance;
+ wxAnyValueTypeImpl<T>::SetValue(value, m_buffer);
+ return *this;
+ }
+
wxAny& operator=(const wxAny &any)
{
if (this != &any)
return *this;
}
-#if wxUSE_VARIANT && (!defined(__VISUALC__) || __VISUALC__ >= 1300)
- //
- // Adding this operator for VC6 breaks wxAny, and also
- // some cases of implicit conversion from wxVariant to wxAny.
- //
- // e.g. wxAny any = variant; // should work
- //
- // wxAny any;
- // any = 16;
- // any = variant; // probably doesn't work - uses template
- // // assignment, most likely
- //
+#if wxUSE_VARIANT
wxAny& operator=(const wxVariant &variant)
{
AssignVariant(variant);
}
#endif
- template<typename T>
- wxAny& operator=(const T &value)
- {
- m_type->DeleteValue(m_buffer);
- m_type = wxAnyValueTypeImpl<T>::sm_instance;
- wxAnyValueTypeImpl<T>::SetValue(value, m_buffer);
- return *this;
- }
-
wxAny& operator=(const char* value)
{ Assign(wxString(value)); return *this; }
wxAny& operator=(const wchar_t* value)
CPPUNIT_ASSERT(variant.GetType() == "ulonglong");
CPPUNIT_ASSERT(variant.GetLong() == 1000);
- // FIXME-VC6: for VC6, any = variant needs to be any = wxAny(variant).
- // Note that 'wxAny any = variant' does work, probably because
- // ctor is used in that case instead of assignment operator.
- any = wxAny(vString);
+ any = vString;
CPPUNIT_ASSERT(any == "ABC");
res = any.GetAs(&variant);
CPPUNIT_ASSERT(res);
CPPUNIT_ASSERT(variant.GetString() == "ABC");
- any = wxAny(vDouble);
+ any = vDouble;
double d = wxANY_AS(any, double);
CPPUNIT_ASSERT_DOUBLES_EQUAL(d, TEST_FLOAT_CONST, FEQ_DELTA);
res = any.GetAs(&variant);
TEST_FLOAT_CONST,
FEQ_DELTA);
- any = wxAny(vBool);
+ any = vBool;
CPPUNIT_ASSERT(wxANY_AS(any, bool) == true);
res = any.GetAs(&variant);
CPPUNIT_ASSERT(res);