From: Ron Lee Date: Tue, 4 Dec 2001 04:21:09 +0000 (+0000) Subject: fix for wxDynamicCast making it safe to pass factory functions. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/ea1e6c4be43e2e9c2de8d42e873ce0fcda9309ac fix for wxDynamicCast making it safe to pass factory functions. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12854 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/object.h b/include/wx/object.h index 316d8d569c..93d89717b4 100644 --- a/include/wx/object.h +++ b/include/wx/object.h @@ -171,9 +171,7 @@ wxObject* WXDLLEXPORT_CTORFN wxConstructorFor##name(void) \ // to be replaced by dynamic_cast<> in the future #define wxDynamicCast(obj, className) \ - ((obj) && ((obj)->IsKindOf(&className::sm_class##className)) \ - ? (className *)(obj) \ - : (className *)0) + (className *) wxCheckDynamicCast((obj), &className::sm_class##className) // The 'this' pointer is always true, so use this version to cast the this // pointer and avoid compiler warnings. @@ -295,6 +293,11 @@ private: int m_count; }; +inline wxObject *wxCheckDynamicCast(wxObject *obj, wxClassInfo *classInfo) +{ + return obj && obj->GetClassInfo()->IsKindOf(classInfo) ? obj : 0; +} + #ifdef __WXDEBUG__ #ifndef WXDEBUG_NEW #define WXDEBUG_NEW new(__TFILE__,__LINE__)