const compatibility_iterator* operator->() const { return this; } \
\
bool operator==(const compatibility_iterator& i) const \
- { return (m_list == i.m_list) && (m_iter == i.m_iter); } \
+ { \
+ wxASSERT_MSG( m_list && i.m_list, \
+ _T("comparing invalid iterators is illegal") ); \
+ return (m_list == i.m_list) && (m_iter == i.m_iter); \
+ } \
bool operator!=(const compatibility_iterator& i) const \
{ return !( operator==( i ) ); } \
operator bool() const \
} \
compatibility_iterator GetPrevious() const \
{ \
+ if ( m_iter == m_list->begin() ) \
+ return compatibility_iterator(); \
+ \
iterator i = m_iter; \
return compatibility_iterator( m_list, --i ); \
} \
{ \
public: \
typedef nodetype Node; \
- typedef Node* compatibility_iterator; \
+ class compatibility_iterator \
+ { \
+ public: \
+ compatibility_iterator(Node *ptr = NULL) : m_ptr(ptr) { } \
+ \
+ Node *operator->() const { return m_ptr; } \
+ operator Node *() const { return m_ptr; } \
+ \
+ private: \
+ Node *m_ptr; \
+ }; \
\
name(wxKeyType keyType = wxKEY_NONE) : wxListBase(keyType) \
{ } \
name& operator=(const name& list) \
{ Assign(list); return *this; } \
\
- nodetype *GetFirst() const \
+ compatibility_iterator GetFirst() const \
{ return (nodetype *)wxListBase::GetFirst(); } \
- nodetype *GetLast() const \
+ compatibility_iterator GetLast() const \
{ return (nodetype *)wxListBase::GetLast(); } \
\
- nodetype *Item(size_t index) const \
+ compatibility_iterator Item(size_t index) const \
{ return (nodetype *)wxListBase::Item(index); } \
\
T *operator[](size_t index) const \
return node ? (T*)(node->GetData()) : (T*)NULL; \
} \
\
- nodetype *Append(Tbase *object) \
+ compatibility_iterator Append(Tbase *object) \
{ return (nodetype *)wxListBase::Append(object); } \
- nodetype *Insert(Tbase *object) \
+ compatibility_iterator Insert(Tbase *object) \
{ return (nodetype *)Insert((nodetype*)NULL, object); } \
- nodetype *Insert(size_t pos, Tbase *object) \
+ compatibility_iterator Insert(size_t pos, Tbase *object) \
{ return (nodetype *)wxListBase::Insert(pos, object); } \
- nodetype *Insert(nodetype *prev, Tbase *object) \
+ compatibility_iterator Insert(nodetype *prev, Tbase *object) \
{ return (nodetype *)wxListBase::Insert(prev, object); } \
\
- nodetype *Append(long key, void *object) \
+ compatibility_iterator Append(long key, void *object) \
{ return (nodetype *)wxListBase::Append(key, object); } \
- nodetype *Append(const wxChar *key, void *object) \
+ compatibility_iterator Append(const wxChar *key, void *object) \
{ return (nodetype *)wxListBase::Append(key, object); } \
\
nodetype *DetachNode(nodetype *node) \
void Erase(compatibility_iterator it) \
{ DeleteNode(it); } \
\
- nodetype *Find(const Tbase *object) const \
+ compatibility_iterator Find(const Tbase *object) const \
{ return (nodetype *)wxListBase::Find(object); } \
\
virtual nodetype *Find(const wxListKey& key) const \