m_name = name;
}
-wxVariant::wxVariant(const wxCharBuffer& val, const wxString& name)
+wxVariant::wxVariant(const wxScopedCharBuffer& val, const wxString& name)
{
m_data = new wxVariantDataString(wxString(val));
m_name = name;
}
-wxVariant::wxVariant(const wxWCharBuffer& val, const wxString& name)
+wxVariant::wxVariant(const wxScopedWCharBuffer& val, const wxString& name)
{
m_data = new wxVariantDataString(wxString(val));
m_name = name;
void* wxVariant::GetVoidPtr() const
{
- wxASSERT( (GetType() == wxT("void*")) );
+ // handling this specially is convenient when working with COM, see #9873
+ if ( IsNull() )
+ return NULL;
+
+ wxASSERT( GetType() == wxT("void*") );
return (void*) ((wxVariantDataVoidPtr*) m_data)->GetValue();
}
return true;
}
- if(! m_value.ParseDateTime(str.c_str()/*FIXME-UTF8*/))
- return false;
- return true;
+ wxString::const_iterator end;
+ return m_value.ParseDateTime(str, &end) && end == str.end();
}
// wxVariant
*value = ((wxVariantDataDateTime*)GetData())->GetValue();
return true;
}
+
// Fallback to string conversion
wxString val;
- return Convert(&val) &&
- (value->ParseDateTime(val.c_str()/*FIXME-UTF8*/) ||
- value->ParseDate(val.c_str()/*FIXME-UTF8*/) ||
- value->ParseTime(val.c_str()/*FIXME-UTF8*/));
+ if ( !Convert(&val) )
+ return false;
+
+ // Try to parse this as either date and time, only date or only time
+ // checking that the entire string was parsed
+ wxString::const_iterator end;
+ if ( value->ParseDateTime(val, &end) && end == val.end() )
+ return true;
+
+ if ( value->ParseDate(val, &end) && end == val.end() )
+ return true;
+
+ if ( value->ParseTime(val, &end) && end == val.end() )
+ return true;
+
+ return false;
}
#endif // wxUSE_DATETIME