X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/14ca93a0d9a025c6620eaa94ac0687e44c31e234..4106cebb952b5cd64af2b9a5e22b8c10d358aefb:/src/common/object.cpp?ds=sidebyside diff --git a/src/common/object.cpp b/src/common/object.cpp index 605eb33b43..25e6b04650 100644 --- a/src/common/object.cpp +++ b/src/common/object.cpp @@ -81,11 +81,21 @@ wxClassInfo wxObject::ms_classInfo( wxT("wxObject"), 0, 0, wxClassInfo* wxClassInfo::sm_first = NULL; wxHashTable* wxClassInfo::sm_classTable = NULL; +// when using XTI, this method is already implemented inline inside +// DECLARE_DYNAMIC_CLASS but otherwise we intentionally make this function +// non-inline because this allows us to have a non-inline virtual function in +// all wx classes and this solves linking problems for HP-UX native toolchain +// and possibly others (we could make dtor non-inline as well but it's more +// useful to keep it inline than this function) +#if !wxUSE_EXTENDED_RTTI + wxClassInfo *wxObject::GetClassInfo() const { return &wxObject::ms_classInfo; } +#endif // wxUSE_EXTENDED_RTTI + // These are here so we can avoid 'always true/false' warnings // by referring to these instead of true/false const bool wxTrue = true; @@ -220,11 +230,11 @@ void wxClassInfo::Register() sm_classTable = new wxHashTable(wxKEY_STRING); } - // using IMPLEMENT_DYNAMIC_CLASS() macro twice (which may happen if you - // link any object module twice mistakenly) will break this function - // because it will enter an infinite loop and eventually die with "out of - // memory" - as this is quite hard to detect if you're unaware of this, - // try to do some checks here + // Using IMPLEMENT_DYNAMIC_CLASS() macro twice (which may happen if you + // link any object module twice mistakenly, or link twice against wx shared + // library) will break this function because it will enter an infinite loop + // and eventually die with "out of memory" - as this is quite hard to + // detect if you're unaware of this, try to do some checks here. wxASSERT_MSG( sm_classTable->Get(m_className) == NULL, _T("class already in RTTI table - have you used IMPLEMENT_DYNAMIC_CLASS() twice (may be by linking some object module(s) twice)?") );