#ifndef _WX_LISTH__
#define _WX_LISTH__
-#if defined(__GNUG__) && !defined(__APPLE__) && \
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) && \
!(defined(__MINGW32__) && __GNUC__ == 3 && __GNUC_MINOR__ == 2)
#pragma interface "list.h"
#endif
#define wxLIST_COMPATIBILITY
#define WX_DECLARE_LIST_3(elT, dummy1, liT, dummy2, decl) \
- WX_DECLARE_LIST_X(elT, liT, decl)
+ WX_DECLARE_LIST_WITH_DECL(elT, liT, decl)
#define WX_DECLARE_LIST_PTR_3(elT, dummy1, liT, dummy2, decl) \
WX_DECLARE_LIST_3(elT, dummy1, liT, dummy2, decl)
#define WX_DECLARE_LIST_2(elT, liT, dummy, decl) \
- WX_DECLARE_LIST_X(elT, liT, decl)
+ WX_DECLARE_LIST_WITH_DECL(elT, liT, decl)
#define WX_DECLARE_LIST_PTR_2(elT, liT, dummy, decl) \
WX_DECLARE_LIST_2(elT, liT, dummy, decl) \
-#define WX_DECLARE_LIST_X(elT, liT, decl) \
+#define WX_DECLARE_LIST_WITH_DECL(elT, liT, decl) \
WX_DECLARE_LIST_XO(elT*, liT, decl)
#define WX_DECLARE_LIST_XO(elT, liT, decl) \
dummy(); \
}; \
protected: \
- iterator find( elT e ) \
+ iterator find( const elT e ) \
{ \
iterator it, en; \
for( it = begin(), en = end(); it != en; ++it ) \
return it; \
} \
public: \
- liT() {}; \
+ liT() {} \
\
citer Append( elT e ) { push_back( e ); return GetLast(); } \
void Clear() { clear(); } \
{ \
erase( it.m_iter ); \
} \
- citer Find( elT e ) const { return citer( this, ((liT*)this)->find( e ) ); } \
+ citer Find( const elT e ) const { return citer( this, ((liT*)this)->find( e ) ); } \
citer Member( elT e ) const { return Find( e ); } \
citer Insert( elT e ) \
{ push_front( e ); return citer( this, begin() ); } \
}
#define WX_DECLARE_LIST(elementtype, listname) \
- WX_DECLARE_LIST_X(elementtype, listname, class)
+ WX_DECLARE_LIST_WITH_DECL(elementtype, listname, class)
#define WX_DECLARE_LIST_PTR(elementtype, listname) \
WX_DECLARE_LIST(elementtype, listname)
#define WX_DECLARE_EXPORTED_LIST(elementtype, listname) \
- WX_DECLARE_LIST_X(elementtype, listname, class WXDLLEXPORT)
+ WX_DECLARE_LIST_WITH_DECL(elementtype, listname, class WXDLLEXPORT)
#define WX_DECLARE_EXPORTED_LIST_PTR(elementtype, listname) \
WX_DECLARE_EXPORTED_LIST(elementtype, listname)
#define WX_DECLARE_USER_EXPORTED_LIST(elementtype, listname, usergoo) \
- WX_DECLARE_LIST_X(elementtype, listname, class usergoo)
+ WX_DECLARE_LIST_WITH_DECL(elementtype, listname, class usergoo)
#define WX_DECLARE_USER_EXPORTED_LIST_PTR(elementtype, listname, usergoo) \
WX_DECLARE_USER_EXPORTED_LIST(elementtype, listname, usergoo)
// due to circular header dependencies this function has to be declared here
// (normally it's found in utils.h which includes itself list.h...)
+#if WXWIN_COMPATIBILITY_2_4
extern WXDLLIMPEXP_BASE wxChar* copystring(const wxChar *s);
+#endif
class WXDLLEXPORT wxObjectListNode;
typedef wxObjectListNode wxNode;
// a double-linked list class
// -----------------------------------------------------------------------------
-class wxList;
+class WXDLLIMPEXP_BASE wxList;
class WXDLLIMPEXP_BASE wxListBase : public wxObject
{
// search (all return NULL if item not found)
// by data
- wxNodeBase *Find(void *object) const;
+ wxNodeBase *Find(const void *object) const;
// by key
wxNodeBase *Find(const wxListKey& key) const;
void Erase(compatibility_iterator it) \
{ DeleteNode(it); } \
\
- nodetype *Find(Tbase *object) const \
+ nodetype *Find(const Tbase *object) const \
{ return (nodetype *)wxListBase::Find(object); } \
\
virtual nodetype *Find(const wxListKey& key) const \
{ return const_reverse_iterator(NULL, GetFirst()); } \
void resize(size_type n, value_type v = value_type()) \
{ \
- if(n < size()) \
- for(; n < size(); pop_back()); \
- else if(n > size()) \
- for(; n > size(); push_back(v)); \
+ while (n < size()) \
+ pop_back(); \
+ while (n > size()) \
+ push_back(v); \
} \
size_type size() const { return GetCount(); } \
size_type max_size() const { return INT_MAX; } \
typedef elementtype _WX_LIST_ITEM_TYPE_##listname; \
WX_DECLARE_LIST_PTR_2(elementtype, listname, wx##listname##Node, class)
-#define WX_DECLARE_EXPORTED_LIST(elementtype, listname) \
+#define WX_DECLARE_LIST_WITH_DECL(elementtype, listname, decl) \
typedef elementtype _WX_LIST_ITEM_TYPE_##listname; \
- WX_DECLARE_LIST_2(elementtype, listname, wx##listname##Node, class WXDLLEXPORT)
+ WX_DECLARE_LIST_2(elementtype, listname, wx##listname##Node, decl)
+
+#define WX_DECLARE_EXPORTED_LIST(elementtype, listname) \
+ WX_DECLARE_LIST_WITH_DECL(elementtype, listname, class WXDLLEXPORT)
+
#define WX_DECLARE_EXPORTED_LIST_PTR(elementtype, listname) \
typedef elementtype _WX_LIST_ITEM_TYPE_##listname; \
WX_DECLARE_LIST_PTR_2(elementtype, listname, wx##listname##Node, class WXDLLEXPORT)