X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/12028905135250524409f1e7b9bfa9c55e5ce16b..9d41f689dc1b44455bc0fae01318e63dd4caf594:/include/wx/object.h diff --git a/include/wx/object.h b/include/wx/object.h index 7b954025e5..e91d7b9fe6 100644 --- a/include/wx/object.h +++ b/include/wx/object.h @@ -83,8 +83,10 @@ public: wxObject *CreateObject() { return m_objectConstructor ? (*m_objectConstructor)() : 0; } const wxChar *GetClassName() const { return m_className; } - const wxChar *GetBaseClassName1() const { return m_baseInfo1->GetClassName(); } - const wxChar *GetBaseClassName2() const { return m_baseInfo2->GetClassName(); } + const wxChar *GetBaseClassName1() const + { return m_baseInfo1 ? m_baseInfo1->GetClassName() : NULL; } + const wxChar *GetBaseClassName2() const + { return m_baseInfo2 ? m_baseInfo2->GetClassName() : NULL; } const wxClassInfo *GetBaseClass1() const { return m_baseInfo1; } const wxClassInfo *GetBaseClass2() const { return m_baseInfo2; } int GetSize() const { return m_objectSize; } @@ -415,11 +417,6 @@ inline void wxCheckCast(void *ptr) #endif // WXDEBUG && wxUSE_MEMORY_TRACING -#if wxUSE_STD_IOSTREAM && (defined(__WXDEBUG__) || wxUSE_DEBUG_CONTEXT) -// needed by wxObject::Dump -#include "wx/iosfwrap.h" -#endif - // ---------------------------------------------------------------------------- // wxObject: the root class of wxWindows object hierarchy // ---------------------------------------------------------------------------- @@ -483,11 +480,6 @@ public: void operator delete[] (void* buf, const wxChar*, int ); #endif - -#if wxUSE_STD_IOSTREAM && (defined(__WXDEBUG__) || wxUSE_DEBUG_CONTEXT) - virtual void Dump(wxSTD ostream& str); -#endif - // ref counted data handling methods // get/set @@ -542,6 +534,42 @@ inline wxObject *wxCheckDynamicCast(wxObject *obj, wxClassInfo *classInfo) return obj && obj->GetClassInfo()->IsKindOf(classInfo) ? obj : NULL; } +#if wxUSE_EXTENDED_RTTI +class WXDLLIMPEXP_BASE wxDynamicObject : public wxObject +{ + friend class WXDLLIMPEXP_BASE wxDynamicClassInfo ; +public: + // instantiates this object with an instance of its superclass + wxDynamicObject(wxObject* superClassInstance, const wxDynamicClassInfo *info) ; + ~wxDynamicObject(); + + void SetProperty (const wxChar *propertyName, const wxxVariant &value); + wxxVariant GetProperty (const wxChar *propertyName) const ; + + // get the runtime identity of this object + wxClassInfo *GetClassInfo() const + { + return const_cast((const wxClassInfo*)m_classInfo); + } + + wxObject* GetSuperClassInstance() const + { + return m_superClassInstance ; + } +private : + // removes an existing runtime-property + void RemoveProperty( const wxChar *propertyName ) ; + + // renames an existing runtime-property + void RenameProperty( const wxChar *oldPropertyName , const wxChar *newPropertyName ) ; + + wxObject *m_superClassInstance ; + const wxDynamicClassInfo *m_classInfo; + struct wxDynamicObjectInternal; + wxDynamicObjectInternal *m_data; +}; +#endif + // ---------------------------------------------------------------------------- // more debugging macros // ----------------------------------------------------------------------------