// types
// ----------------------------------------------------------------------------
-// type of compare function for list sort operation (as in 'qsort'): it should
-// return a negative value, 0 or positive value if the first element is less
-// than, equal or greater than the second
-
-extern "C"
-{
-typedef int (* LINKAGEMODE wxSortCompareFunction)(const void *elem1, const void *elem2);
-}
-
class WXDLLIMPEXP_FWD_BASE wxObjectListNode;
typedef wxObjectListNode wxNode;
-//
-typedef int (* LINKAGEMODE wxListIterateFunction)(void *current);
-
#if wxUSE_STL
#define wxLIST_COMPATIBILITY
for mingw 3.2.3 compiler bug that prevents a static function of liT class
from being exported into dll. A minimal code snippet reproducing the bug:
- struct WXDLLEXPORT Foo
+ struct WXDLLIMPEXP_CORE Foo
{
static void Bar();
struct SomeInnerClass
push_front( e ); \
return compatibility_iterator( this, begin() ); \
} \
- compatibility_iterator Insert( compatibility_iterator & i, elT e ) \
+ compatibility_iterator Insert(const compatibility_iterator & i, elT e)\
{ \
return compatibility_iterator( this, insert( i.m_iter, e ) ); \
} \
WX_DECLARE_LIST(elementtype, listname)
#define WX_DECLARE_EXPORTED_LIST(elementtype, listname) \
- WX_DECLARE_LIST_WITH_DECL(elementtype, listname, class WXDLLEXPORT)
+ WX_DECLARE_LIST_WITH_DECL(elementtype, listname, class WXDLLIMPEXP_CORE)
#define WX_DECLARE_EXPORTED_LIST_PTR(elementtype, listname) \
WX_DECLARE_EXPORTED_LIST(elementtype, listname)
virtual void DeleteData() { }
public:
// for wxList::iterator
- void** GetDataPtr() const { return &(wx_const_cast(wxNodeBase*, this)->m_data); }
+ void** GetDataPtr() const { return &(const_cast<wxNodeBase*>(this)->m_data); }
private:
// optional key stuff
wxListKeyValue m_key;
for(size_type i = 0; i < n; ++i) \
Append((const_base_reference)v); \
} \
- iterator insert(const iterator& it, const_reference v = value_type())\
+ iterator insert(const iterator& it, const_reference v) \
{ \
- Insert(it.m_node, (const_base_reference)v); \
+ if ( it == end() ) \
+ Append((const_base_reference)v); \
+ else \
+ Insert(it.m_node, (const_base_reference)v); \
iterator itprev(it); \
return itprev--; \
} \
- void insert(const iterator& it, size_type n, const_reference v = value_type())\
+ 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); \
} \
- void insert(const iterator& it, const_iterator first, const const_iterator& last)\
+ void insert(const iterator& it, \
+ const_iterator first, const const_iterator& last) \
{ \
for(; first != last; ++first) \
Insert(it.m_node, (const_base_reference)*first); \
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)
+ WX_DECLARE_LIST_WITH_DECL(elementtype, listname, class WXDLLIMPEXP_CORE)
#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)
+ WX_DECLARE_LIST_PTR_2(elementtype, listname, wx##listname##Node, class WXDLLIMPEXP_CORE)
#define WX_DECLARE_USER_EXPORTED_LIST(elementtype, listname, usergoo) \
typedef elementtype _WX_LIST_ITEM_TYPE_##listname; \