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