X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8ad170cb85e398dc17c0387fcf57ce8aa8456775..03773e400b6ff2692f2a9ba045d652c3b7b7109d:/include/wx/list.h diff --git a/include/wx/list.h b/include/wx/list.h index 7bfeb79f63..a84ee041bb 100644 --- a/include/wx/list.h +++ b/include/wx/list.h @@ -186,7 +186,7 @@ inline const void *wxListCastElementToVoidPtr(const wxString& str) bool operator==(const compatibility_iterator& i) const \ { \ wxASSERT_MSG( m_list && i.m_list, \ - _T("comparing invalid iterators is illegal") ); \ + wxT("comparing invalid iterators is illegal") ); \ return (m_list == i.m_list) && (m_iter == i.m_iter); \ } \ bool operator!=(const compatibility_iterator& i) const \ @@ -258,7 +258,7 @@ inline const void *wxListCastElementToVoidPtr(const wxString& str) iterator i = const_cast< liT* >(this)->end(); \ return compatibility_iterator( this, !empty() ? --i : i ); \ } \ - compatibility_iterator Member( elT e ) const \ + bool Member( elT e ) const \ { return Find( e ); } \ compatibility_iterator Nth( int n ) const \ { return Item( n ); } \ @@ -420,9 +420,9 @@ class WXDLLIMPEXP_BASE wxNodeBase friend class wxListBase; public: // ctor - wxNodeBase(wxListBase *list = (wxListBase *)NULL, - wxNodeBase *previous = (wxNodeBase *)NULL, - wxNodeBase *next = (wxNodeBase *)NULL, + wxNodeBase(wxListBase *list = NULL, + wxNodeBase *previous = NULL, + wxNodeBase *next = NULL, void *data = NULL, const wxListKey& key = wxDefaultListKey); @@ -468,7 +468,7 @@ private: wxListBase *m_list; // list we belong to - DECLARE_NO_COPY_CLASS(wxNodeBase) + wxDECLARE_NO_COPY_CLASS(wxNodeBase); }; // ----------------------------------------------------------------------------- @@ -559,7 +559,7 @@ protected: { wxNodeBase *node = Item(n); - return node ? node->GetData() : (wxNodeBase *)NULL; + return node ? node->GetData() : NULL; } // operations @@ -569,7 +569,8 @@ protected: // append to beginning of list wxNodeBase *Append(void *object); // insert a new item at the beginning of the list - wxNodeBase *Insert(void *object) { return Insert( (wxNodeBase*)NULL, object); } + wxNodeBase *Insert(void *object) + { return Insert(static_cast(NULL), object); } // insert a new item at the given position wxNodeBase *Insert(size_t pos, void *object) { return pos == GetCount() ? Append(object) @@ -673,10 +674,10 @@ private: classexp nodetype : public wxNodeBase \ { \ public: \ - nodetype(wxListBase *list = (wxListBase *)NULL, \ - nodetype *previous = (nodetype *)NULL, \ - nodetype *next = (nodetype *)NULL, \ - T *data = (T *)NULL, \ + nodetype(wxListBase *list = NULL, \ + nodetype *previous = NULL, \ + nodetype *next = NULL, \ + T *data = NULL, \ const wxListKey& key = wxDefaultListKey) \ : wxNodeBase(list, previous, next, data, key) { } \ \ @@ -733,13 +734,14 @@ private: T *operator[](size_t index) const \ { \ nodetype *node = Item(index); \ - return node ? (T*)(node->GetData()) : (T*)NULL; \ + return node ? (T*)(node->GetData()) : NULL; \ } \ \ nodetype *Append(Tbase *object) \ { return (nodetype *)wxListBase::Append(object); } \ nodetype *Insert(Tbase *object) \ - { return (nodetype *)Insert((nodetype*)NULL, object); } \ + { return (nodetype *)Insert(static_cast(NULL), \ + object); } \ nodetype *Insert(size_t pos, Tbase *object) \ { return (nodetype *)wxListBase::Insert(pos, object); } \ nodetype *Insert(nodetype *prev, Tbase *object) \ @@ -1017,13 +1019,13 @@ private: void insert(const iterator& it, size_type n, const_reference v) \ { \ for(size_type i = 0; i < n; ++i) \ - Insert(it.m_node, (const_base_reference)v); \ + insert(it, v); \ } \ void insert(const iterator& it, \ const_iterator first, const const_iterator& last) \ { \ for(; first != last; ++first) \ - Insert(it.m_node, (const_base_reference)*first); \ + insert(it, *first); \ } \ iterator erase(const iterator& it) \ { \ @@ -1032,7 +1034,9 @@ private: } \ iterator erase(const iterator& first, const iterator& last) \ { \ - iterator next = last; ++next; \ + iterator next = last; \ + if ( next != end() ) \ + ++next; \ DeleteNodes(first.m_node, last.m_node); \ return next; \ } \ @@ -1043,10 +1047,11 @@ private: { splice(it, l, l.begin(), l.end() ); } \ void splice(const iterator& it, name& l, const iterator& first) \ { \ - iterator tmp = first; ++tmp; \ - if(it == first || it == tmp) return; \ - insert(it, *first); \ - l.erase(first); \ + if ( it != first ) \ + { \ + insert(it, *first); \ + l.erase(first); \ + } \ } \ void remove(const_reference v) \ { DeleteObject((const_base_reference)v); } \ @@ -1174,12 +1179,8 @@ public: // compatibility methods void Sort(wxSortCompareFunction compfunc) { wxListBase::Sort(compfunc); } -#endif - -#if wxUSE_STL -#else - wxNode *Member(wxObject *object) const { return (wxNode *)Find(object); } -#endif + bool Member(wxObject *object) const { return Find(object) != NULL; } +#endif // !wxUSE_STL }; #if !wxUSE_STL @@ -1275,4 +1276,15 @@ public: (list).clear(); \ } +// append all element of one list to another one +#define WX_APPEND_LIST(list, other) \ + { \ + wxList::compatibility_iterator node = other->GetFirst(); \ + while ( node ) \ + { \ + (list)->push_back(node->GetData()); \ + node = node->GetNext(); \ + } \ + } + #endif // _WX_LISTH__