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 ); } \
virtual nodetype *Find(const wxListKey& key) const \
{ return (nodetype *)wxListBase::Find(key); } \
\
+ bool Member(const Tbase *object) const \
+ { return Find(object) != NULL; } \
+ \
int IndexOf(Tbase *object) const \
{ return wxListBase::IndexOf(object); } \
\
iterator insert(const iterator& it, const_reference v) \
{ \
if ( it == end() ) \
+ { \
Append((const_base_reference)v); \
+ /* \
+ note that this is the new end(), the old one was \
+ invalidated by the Append() call, and this is why we \
+ can't use the same code as in the normal case below \
+ */ \
+ iterator itins(end()); \
+ return --itins; \
+ } \
else \
+ { \
Insert(it.m_node, (const_base_reference)v); \
- iterator itprev(it); \
- return itprev--; \
+ iterator itins(it); \
+ return --itins; \
+ } \
} \
void insert(const iterator& it, size_type n, const_reference v) \
{ \
// compatibility methods
void Sort(wxSortCompareFunction compfunc) { wxListBase::Sort(compfunc); }
-#endif
-
-#if wxUSE_STL
-#else
- wxNode *Member(wxObject *object) const { return (wxNode *)Find(object); }
-#endif
+#endif // !wxUSE_STL
};
#if !wxUSE_STL