X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f6bcfd974ef26faf6f91a62cac09827e09463fd1..bc5a847c1b4d89a9e26a3ac7b9e75f41b7530316:/src/common/list.cpp?ds=sidebyside diff --git a/src/common/list.cpp b/src/common/list.cpp index 0e326ee1f5..e94aa517a8 100644 --- a/src/common/list.cpp +++ b/src/common/list.cpp @@ -16,8 +16,9 @@ // ----------------------------------------------------------------------------- // headers // ----------------------------------------------------------------------------- + #ifdef __GNUG__ -#pragma implementation "list.h" + #pragma implementation "list.h" #endif // For compilers that support precompilation, includes "wx.h". @@ -170,8 +171,8 @@ void wxListBase::DoCopy(const wxListBase& list) m_nodeFirst = m_nodeLast = (wxNodeBase *) NULL; - switch (m_keyType) { - + switch (m_keyType) + { case wxKEY_INTEGER: { long key; @@ -242,7 +243,10 @@ wxNodeBase *wxListBase::Append(void *object) wxCHECK_MSG( m_keyType == wxKEY_NONE, (wxNodeBase *)NULL, wxT("need a key for the object to append") ); - wxNodeBase *node = CreateNode(m_nodeLast, (wxNodeBase *)NULL, object); + // we use wxDefaultListKey even though it is the default parameter value + // because gcc under Mac OS X seems to miscompile this call otherwise + wxNodeBase *node = CreateNode(m_nodeLast, (wxNodeBase *)NULL, object, + wxDefaultListKey); return AppendCommon(node); } @@ -292,7 +296,8 @@ wxNodeBase *wxListBase::Insert(wxNodeBase *position, void *object) next = m_nodeFirst; } - wxNodeBase *node = CreateNode(prev, next, object); + // wxDefaultListKey: see comment in Append() above + wxNodeBase *node = CreateNode(prev, next, object, wxDefaultListKey); if ( !m_nodeFirst ) { m_nodeLast = node; @@ -527,10 +532,18 @@ void wxListBase::Sort(const wxSortCompareFunction compfunc) delete[] objArray; } +// ============================================================================ +// compatibility section from now on +// ============================================================================ + +#ifdef wxLIST_COMPATIBILITY + // ----------------------------------------------------------------------------- // wxList (a.k.a. wxObjectList) // ----------------------------------------------------------------------------- +IMPLEMENT_DYNAMIC_CLASS(wxList, wxObject) + void wxObjectListNode::DeleteData() { delete (wxObject *)GetData(); @@ -540,6 +553,8 @@ void wxObjectListNode::DeleteData() // wxStringList // ----------------------------------------------------------------------------- +IMPLEMENT_DYNAMIC_CLASS(wxStringList, wxObject) + // instead of WX_DEFINE_LIST(wxStringListBase) we define this function // ourselves void wxStringListNode::DeleteData() @@ -635,7 +650,7 @@ bool wxStringList::Member(const wxChar *s) const return FALSE; } -static int LINKAGEMODE +extern "C" int LINKAGEMODE wx_comparestrings(const void *arg1, const void *arg2) { wxChar **s1 = (wxChar **) arg1; @@ -665,3 +680,6 @@ void wxStringList::Sort() delete [] array; } + +#endif // wxLIST_COMPATIBILITY +