Allow wxAny to contain 'const char*' or 'const wchar_t*'. This was previously not possible since these pointers were converted to wxString, as convenient means to work with string literals. Now pointers (to string literals) are stored instead, and As<wxString>(), comparison operators do the type conversion.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64106 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -374,12 +374,16 @@ bool wxAnyValueTypeImplUint::ConvertValue(const wxAnyValueBuffer& src,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool wxAnyValueTypeImplString::ConvertValue(const wxAnyValueBuffer& src,
|
||||
wxAnyValueType* dstType,
|
||||
wxAnyValueBuffer& dst) const
|
||||
// Convert wxString to destination wxAny value type
|
||||
bool wxAnyConvertString(const wxString& value,
|
||||
wxAnyValueType* dstType,
|
||||
wxAnyValueBuffer& dst)
|
||||
{
|
||||
wxString value = GetValue(src);
|
||||
if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, wxAnyBaseIntType) )
|
||||
if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, wxString) )
|
||||
{
|
||||
wxAnyValueTypeImpl<wxString>::SetValue(value, dst);
|
||||
}
|
||||
else if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, wxAnyBaseIntType) )
|
||||
{
|
||||
wxAnyBaseIntType value2;
|
||||
#ifdef wxLongLong_t
|
||||
@@ -411,14 +415,15 @@ bool wxAnyValueTypeImplString::ConvertValue(const wxAnyValueBuffer& src,
|
||||
else if ( wxANY_VALUE_TYPE_CHECK_TYPE(dstType, bool) )
|
||||
{
|
||||
bool value2;
|
||||
value.MakeLower();
|
||||
if ( value == wxS("true") ||
|
||||
value == wxS("yes") ||
|
||||
value == wxS('1') )
|
||||
wxString s(value);
|
||||
s.MakeLower();
|
||||
if ( s == wxS("true") ||
|
||||
s == wxS("yes") ||
|
||||
s == wxS('1') )
|
||||
value2 = true;
|
||||
else if ( value == wxS("false") ||
|
||||
value == wxS("no") ||
|
||||
value == wxS('0') )
|
||||
else if ( s == wxS("false") ||
|
||||
s == wxS("no") ||
|
||||
s == wxS('0') )
|
||||
value2 = false;
|
||||
else
|
||||
return false;
|
||||
@@ -493,10 +498,13 @@ bool wxAnyValueTypeImplDouble::ConvertValue(const wxAnyValueBuffer& src,
|
||||
|
||||
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImplInt)
|
||||
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImplUint)
|
||||
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImplString)
|
||||
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImpl<bool>)
|
||||
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImplDouble)
|
||||
|
||||
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImplwxString)
|
||||
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImplConstCharPtr)
|
||||
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImplConstWchar_tPtr)
|
||||
|
||||
WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImpl<wxDateTime>)
|
||||
//WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImpl<wxObject*>)
|
||||
//WX_IMPLEMENT_ANY_VALUE_TYPE(wxAnyValueTypeImpl<wxArrayString>)
|
||||
|
Reference in New Issue
Block a user