X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4de6207afa9a78be63fe93df44ff5b90cecd2781..16694769eccf9058669254e17a32764eff33f476:/include/wx/object.h diff --git a/include/wx/object.h b/include/wx/object.h index b54f8c528a..3f7faec6b2 100644 --- a/include/wx/object.h +++ b/include/wx/object.h @@ -138,19 +138,19 @@ wxObject* WXDLLEXPORT_CTORFN wxConstructorFor##name(void) \ // Single inheritance with one base class #define IMPLEMENT_ABSTRACT_CLASS(name, basename) \ wxClassInfo name::sm_class##name((wxChar *) _T(#name), (wxChar *) _T(#basename), \ - (wxChar *) NULL, (int) sizeof(name), (wxObjectConstructorFn) NULL); + (wxChar *) NULL, (int) sizeof(name), (wxObjectConstructorFn) NULL); // Multiple inheritance with two base classes #define IMPLEMENT_ABSTRACT_CLASS2(name, basename1, basename2) \ wxClassInfo name::sm_class##name((wxChar *) _T(#name), (wxChar *) _T(#basename1), \ - (wxChar *) _T(#basename2), (int) sizeof(name), (wxObjectConstructorFn) NULL); + (wxChar *) _T(#basename2), (int) sizeof(name), (wxObjectConstructorFn) NULL); #define IMPLEMENT_CLASS IMPLEMENT_ABSTRACT_CLASS #define IMPLEMENT_CLASS2 IMPLEMENT_ABSTRACT_CLASS2 #define CLASSINFO(name) (&name::sm_class##name) -#else +#else // !wxUSE_DYNAMIC_CLASSES // No dynamic class system: so stub out the macros #define DECLARE_DYNAMIC_CLASS(name) @@ -163,20 +163,26 @@ wxObject* WXDLLEXPORT_CTORFN wxConstructorFor##name(void) \ #define IMPLEMENT_CLASS IMPLEMENT_ABSTRACT_CLASS #define IMPLEMENT_CLASS2 IMPLEMENT_ABSTRACT_CLASS2 -#endif +#endif // wxUSE_DYNAMIC_CLASSES/!wxUSE_DYNAMIC_CLASSES #define wxIS_KIND_OF(obj, className) obj->IsKindOf(&className::sm_class##className) // Just seems a bit nicer-looking (pretend it's not a macro) #define wxIsKindOf(obj, className) obj->IsKindOf(&className::sm_class##className) +// to be replaced by dynamic_cast<> in the future +#define wxDynamicCast(obj, className) \ + ((obj) && ((obj)->IsKindOf(&className::sm_class##className)) \ + ? (className *)(obj) \ + : (className *)0) + // Unfortunately Borland seems to need this include. #ifdef __BORLANDC__ -#if wxUSE_IOSTREAMH -#include -#else -#include -#endif + #if wxUSE_IOSTREAMH + #include + #else + #include + #endif #endif class WXDLLEXPORT wxObjectRefData; @@ -192,6 +198,8 @@ class WXDLLEXPORT wxObject virtual ~wxObject(void); virtual wxClassInfo *GetClassInfo(void) const { return &sm_classwxObject; } + wxObject *Clone(void) const; + virtual void CopyObject(wxObject& object_dest) const; bool IsKindOf(wxClassInfo *info) const;