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;
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)?") );