From: Vadim Zeitlin Date: Tue, 8 Mar 2005 13:09:25 +0000 (+0000) Subject: use static_cast<> for wxStaticCast; updated comment in front of wxDynamicCast() X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/73fbb031f560f00a859d12c2eba133551f807622 use static_cast<> for wxStaticCast; updated comment in front of wxDynamicCast() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32676 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/object.h b/include/wx/object.h index 43e96756eb..5c5393eb96 100644 --- a/include/wx/object.h +++ b/include/wx/object.h @@ -304,7 +304,11 @@ name##PluginSentinel m_pluginsentinel; // Just seems a bit nicer-looking (pretend it's not a macro) #define wxIsKindOf(obj, className) obj->IsKindOf(&className::ms_classInfo) -// to be replaced by dynamic_cast<> in the future +// this cast does some more checks at compile time as it uses static_cast +// internally +// +// note that it still has different semantics from dynamic_cast<> and so can't +// be replaced by it as long as there are any compilers not supporting it #define wxDynamicCast(obj, className) \ ((className *) wxCheckDynamicCast( \ wx_const_cast(wxObject *, wx_static_cast(const wxObject *, \ @@ -314,7 +318,7 @@ name##PluginSentinel m_pluginsentinel; // The 'this' pointer is always true, so use this version // to cast the this pointer and avoid compiler warnings. #define wxDynamicCastThis(className) \ - (IsKindOf(&className::ms_classInfo) ? (className *)(this) : (className *)0) + (IsKindOf(&className::ms_classInfo) ? (className *)(this) : (className *)0) #ifdef __WXDEBUG__ inline void* wxCheckCast(void *ptr) @@ -326,7 +330,7 @@ inline void* wxCheckCast(void *ptr) ((className *)wxCheckCast(wxDynamicCast(obj, className))) #else // !__WXDEBUG__ -#define wxStaticCast(obj, className) ((className *)(obj)) +#define wxStaticCast(obj, className) wx_static_cast(className *, obj) #endif // __WXDEBUG__