// 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);
+}
//
typedef int (* LINKAGEMODE wxListIterateFunction)(void *current);
WXDLLEXPORT_DATA(extern wxListKey) wxDefaultListKey;
+class WXDLLEXPORT wxListBase;
+
class WXDLLEXPORT wxNodeBase
{
friend class wxListBase;
// -----------------------------------------------------------------------------
// a double-linked list class
// -----------------------------------------------------------------------------
+
class WXDLLEXPORT wxListBase : public wxObject
{
friend class wxNodeBase; // should be able to call DetachNode()
{ wxListBase::Sort((wxSortCompareFunction)func); } \
\
protected: \
- wxNodeBase *CreateNode(wxNodeBase *prev, wxNodeBase *next, \
+ virtual wxNodeBase *CreateNode(wxNodeBase *prev, wxNodeBase *next, \
void *data, \
const wxListKey& key = wxDefaultListKey) \
{ \
{
public:
wxList(int key_type = wxKEY_NONE) : wxObjectList((wxKeyType)key_type) { }
-#ifdef __DARWIN__
+ // this destructor is required for Darwin
~wxList() { }
-#endif
wxList& operator=(const wxList& list)
{ return (wxList&)wxListBase::operator=(list); }
void Sort(wxSortCompareFunction compfunc) { wxListBase::Sort(compfunc); }
wxNode *Member(wxObject *object) const { return (wxNode *)Find(object); }
+
+private:
+ DECLARE_DYNAMIC_CLASS(wxList)
};
// -----------------------------------------------------------------------------
private:
void DoCopy(const wxStringList&); // common part of copy ctor and operator=
+
+ DECLARE_DYNAMIC_CLASS(wxStringList)
};
#endif // wxLIST_COMPATIBILITY