X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6244848856584171db8cd74a7ff227250e46cc54..a0d8a3052817fef6eef27e9a6ab8802495a39db8:/src/common/list.cpp diff --git a/src/common/list.cpp b/src/common/list.cpp index f15ace4def..8bc94a8c64 100644 --- a/src/common/list.cpp +++ b/src/common/list.cpp @@ -37,16 +37,12 @@ #include "wx/utils.h" // for copystring() (beurk...) #endif -// Sun CC compatibility (interference with xview/pkg.h, apparently...) -// But XView is no longer supported. -/* -#if defined (SUN_CC) || defined(__SUNCC__) && defined(__XVIEW__) - #undef va_start - #undef va_end - #undef va_arg - #undef va_list -#endif -*/ +// ----------------------------------------------------------------------------- +// implementation of standard lists +// ----------------------------------------------------------------------------- + +#include "wx/listimpl.cpp" +WX_DEFINE_LIST(wxWindowList); // ============================================================================= // implementation @@ -56,6 +52,8 @@ // wxListKey // ----------------------------------------------------------------------------- +wxListKey wxDefaultListKey; + bool wxListKey::operator==(wxListKeyValue value) const { switch ( m_keyType ) @@ -118,13 +116,18 @@ wxNodeBase::~wxNodeBase() // compatibility with old code if ( m_list != NULL ) { + if ( m_list->m_keyType == wxKEY_STRING ) + { + free(m_key.string); + } + m_list->DetachNode(this); } } int wxNodeBase::IndexOf() const { - wxCHECK_MSG( m_list, NOT_FOUND, "node doesn't belong to a list in IndexOf"); + wxCHECK_MSG( m_list, wxNOT_FOUND, "node doesn't belong to a list in IndexOf"); // It would be more efficient to implement IndexOf() completely inside // wxListBase (only traverse the list once), but this is probably a more @@ -330,7 +333,7 @@ int wxListBase::IndexOf(void *object) const { wxNodeBase *node = Find( object ); - return node ? node->IndexOf() : NOT_FOUND; + return node ? node->IndexOf() : wxNOT_FOUND; } void wxListBase::DoDeleteNode(wxNodeBase *node) @@ -346,6 +349,8 @@ void wxListBase::DoDeleteNode(wxNodeBase *node) node->DeleteData(); } + // so that the node knows that it's being deleted by the list + node->m_list = NULL; delete node; } @@ -636,4 +641,3 @@ void wxStringList::Sort() delete [] array; } -