X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c81aea07393c320a930a63eafbc762f7c404b989..ca77701441e39245dcbfce903049e76f166979e5:/include/wx/typeinfo.h diff --git a/include/wx/typeinfo.h b/include/wx/typeinfo.h index becacc5547..734783af50 100644 --- a/include/wx/typeinfo.h +++ b/include/wx/typeinfo.h @@ -27,6 +27,17 @@ #ifndef wxNO_RTTI +// +// Let's trust that Visual C++ versions 9.0 and later implement C++ +// RTTI well enough, so we can use it and work around harmless memory +// leaks reported by the static run-time libraries. +// +#if wxCHECK_VISUALC_VERSION(9) + #define wxTRUST_CPP_RTTI 1 +#else + #define wxTRUST_CPP_RTTI 0 +#endif + #include #include @@ -36,6 +47,12 @@ #define WX_DEFINE_TYPEINFO(CLS) #define WX_DECLARE_ABSTRACT_TYPEINFO(CLS) +#if wxTRUST_CPP_RTTI + +#define wxTypeId typeid + +#else /* !wxTRUST_CPP_RTTI */ + // // For improved type-safety, let's make the check using class name // comparison. Most modern compilers already do this, but we cannot @@ -67,8 +84,12 @@ private: #define wxTypeId(OBJ) wxTypeIdentifier(typeid(OBJ).name()) +#endif /* wxTRUST_CPP_RTTI/!wxTRUST_CPP_RTTI */ + #else // if !wxNO_RTTI +#define wxTRUST_CPP_RTTI 0 + // // When C++ RTTI is not available, we will have to make the type comparison // using pointer to a dummy static member function. This will fail if @@ -116,7 +137,7 @@ _WX_DECLARE_TYPEINFO_CUSTOM(CLS, sm_wxClassInfo) #define wxTypeId(OBJ) (OBJ).GetWxTypeId() -// Because abstract classes cannot be instantiated, we use +// Because abstract classes cannot be instantiated, we use // this macro to define pure virtual type interface for them. #define WX_DECLARE_ABSTRACT_TYPEINFO(CLS) \ public: \