X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/afc89ff455aeff7b156273726e62c3c90f197687..402dc2145d17340e1a331acc60f36d5c49a136ca:/include/wx/xti.h?ds=sidebyside diff --git a/include/wx/xti.h b/include/wx/xti.h index f603574c32..1d423fd1a7 100644 --- a/include/wx/xti.h +++ b/include/wx/xti.h @@ -84,6 +84,7 @@ class WXDLLIMPEXP_BASE wxObject; class WXDLLIMPEXP_BASE wxClassInfo; class WXDLLIMPEXP_BASE wxDynamicClassInfo; class WXDLLIMPEXP_BASE wxHashTable; +class WXDLLIMPEXP_BASE wxHashTable_Node; class WXDLLIMPEXP_BASE wxObjectRefData; class WXDLLIMPEXP_BASE wxEvent; class WXDLLIMPEXP_BASE wxEvtHandler; @@ -1601,6 +1602,7 @@ class WXDLLIMPEXP_BASE wxClassInfo { friend class WXDLLIMPEXP_BASE wxPropertyInfo ; friend class WXDLLIMPEXP_BASE wxHandlerInfo ; + friend wxObject *wxCreateDynamicObject(const wxChar *name); public: wxClassInfo(const wxClassInfo **_Parents, const wxChar *_UnitName, @@ -1718,6 +1720,8 @@ public: return false ; } + DECLARE_CLASS_INFO_ITERATORS() + // if there is a callback registered with that class it will be called // before this object will be written to disk, it can veto streaming out // this object by returning false, if this class has not registered a @@ -1788,7 +1792,7 @@ public: // puts all the properties of this class and its superclasses in the map, as long as there is not yet // an entry with the same name (overriding mechanism) void GetProperties( wxPropertyInfoMap &map ) const ; -public: +private: const wxChar *m_className; int m_objectSize; wxObjectConstructorFn m_objectConstructor; @@ -1799,8 +1803,6 @@ public: static wxClassInfo *sm_first; wxClassInfo *m_next; - // FIXME: this should be private (currently used directly by way too - // many clients) static wxHashTable *sm_classTable; protected : @@ -2015,27 +2017,27 @@ private : // Multiple inheritance with two base classes -#define _IMPLEMENT_DYNAMIC_CLASS2(name, basename, basename2, unit) \ +#define _IMPLEMENT_DYNAMIC_CLASS2(name, basename, basename2, unit, callback) \ wxObject* wxConstructorFor##name() \ { return new name; } \ const wxClassInfo* name::ms_classParents[] = { &basename::ms_classInfo ,&basename2::ms_classInfo , NULL } ; \ - wxObject* wxVariantToObjectConverter##name ( wxxVariant &data ) { return data.wxTEMPLATED_MEMBER_CALL(Get , name*) ; } \ + wxObject* wxVariantOfPtrToObjectConverter##name ( wxxVariant &data ) { return data.wxTEMPLATED_MEMBER_CALL(Get , name*) ; } \ wxxVariant wxObjectToVariantConverter##name ( wxObject *data ) { return wxxVariant( dynamic_cast (data) ) ; } \ wxClassInfo name::ms_classInfo(name::ms_classParents , wxT(unit) , wxT(#name), \ (int) sizeof(name), \ (wxObjectConstructorFn) wxConstructorFor##name , \ name::GetPropertiesStatic(),name::GetHandlersStatic(),name::ms_constructor , name::ms_constructorProperties , \ - name::ms_constructorPropertiesCount , wxVariantToObjectConverter##name , NULL, wxObjectToVariantConverter##name); \ + name::ms_constructorPropertiesCount , wxVariantOfPtrToObjectConverter##name , NULL , wxObjectToVariantConverter##name , callback); #define IMPLEMENT_DYNAMIC_CLASS2( name , basename , basename2) \ - _IMPLEMENT_DYNAMIC_CLASS2( name , basename , basename2 , "") \ + _IMPLEMENT_DYNAMIC_CLASS2( name , basename , basename2 , "", NULL) \ _TYPEINFO_CLASSES(name, NULL , NULL) \ wxPropertyInfo *name::GetPropertiesStatic() { return (wxPropertyInfo*) NULL ; } \ wxHandlerInfo *name::GetHandlersStatic() { return (wxHandlerInfo*) NULL ; } \ wxCONSTRUCTOR_DUMMY( name ) #define IMPLEMENT_DYNAMIC_CLASS2_XTI( name , basename , basename2, unit) \ - _IMPLEMENT_DYNAMIC_CLASS2( name , basename , basename2 , unit) \ + _IMPLEMENT_DYNAMIC_CLASS2( name , basename , basename2 , unit, NULL) \ _TYPEINFO_CLASSES(name, NULL , NULL)