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;
{
friend class WXDLLIMPEXP_BASE wxPropertyInfo ;
friend class WXDLLIMPEXP_BASE wxHandlerInfo ;
+ friend wxObject *wxCreateDynamicObject(const wxChar *name);
public:
wxClassInfo(const wxClassInfo **_Parents,
const wxChar *_UnitName,
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
// 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;
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 :
// 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<name*> (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)