Addition at simple wxObject*, support into wxVariant.
This includes 2 new methods wxVariant::IsValueKindOf() and wxVariantData::GetValueClassInfo() to allow query of the wxRTTI data of the variant's data. Also included is a macro analogues to dynamicCast for fetching objects out of a wxVariant. Documentation patches for the above. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20860 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -67,6 +67,8 @@ public:
|
||||
virtual bool Read(wxString& str) = 0;
|
||||
// What type is it? Return a string name.
|
||||
virtual wxString GetType() const = 0;
|
||||
// If it based on wxObject return the ClassInfo.
|
||||
virtual wxClassInfo* GetValueClassInfo() { return NULL; }
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -95,6 +97,7 @@ public:
|
||||
wxVariant(const wxStringList& val, const wxString& name = wxEmptyString);
|
||||
wxVariant(const wxList& val, const wxString& name = wxEmptyString); // List of variants
|
||||
wxVariant(void* ptr, const wxString& name = wxEmptyString); // void* (general purpose)
|
||||
wxVariant(wxObject* ptr, const wxString& name = wxEmptyString); //wxObject
|
||||
wxVariant(wxVariantData* data, const wxString& name = wxEmptyString); // User-defined data
|
||||
//TODO: Need to document
|
||||
#if wxUSE_DATETIME
|
||||
@@ -181,6 +184,9 @@ public:
|
||||
inline operator long () const { return GetLong(); }
|
||||
inline operator bool () const { return GetBool(); }
|
||||
inline operator void* () const { return GetVoidPtr(); }
|
||||
// No implicit conversion to wxObject, as that would really
|
||||
// confuse people between conversion to our contained data
|
||||
// and downcasting to see our base type.
|
||||
//TODO: Need to document
|
||||
#if wxUSE_DATETIME
|
||||
inline operator wxDateTime () const { return GetDateTime(); }
|
||||
@@ -203,6 +209,7 @@ public:
|
||||
wxString GetType() const;
|
||||
|
||||
bool IsType(const wxString& type) const;
|
||||
bool IsValueKindOf(const wxClassInfo* type) const;
|
||||
|
||||
// Return the number of elements in a list
|
||||
int GetCount() const;
|
||||
@@ -219,6 +226,7 @@ public:
|
||||
wxStringList& GetStringList() const ;
|
||||
|
||||
void* GetVoidPtr() const ;
|
||||
wxObject* GetWxObjectPtr() ;
|
||||
//TODO: Need to document
|
||||
#if wxUSE_DATETIME
|
||||
wxDateTime GetDateTime() const ;
|
||||
@@ -268,6 +276,14 @@ protected:
|
||||
wxString m_name;
|
||||
};
|
||||
|
||||
//Since we want type safety wxVariant we need to fetch and dynamic_cast
|
||||
//in a seemingly safe way so the compiler can check, so we define
|
||||
//a dynamic_cast /wxDynamicCast analogue.
|
||||
|
||||
#define wxGetVariantCast(var,classname) \
|
||||
((classname*)(var.IsValueKindOf(&classname::sm_class##classname) ?\
|
||||
var.GetWxObjectPtr() : NULL));
|
||||
|
||||
extern wxVariant WXDLLEXPORT wxNullVariant;
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user