X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/2b5f62a0b2db198609b45dec622a018dae37008e..687dcff3a46a55c11851b1cabdbbbef5492a2f5f:/include/wx/list.h diff --git a/include/wx/list.h b/include/wx/list.h index ed182de01f..e3c8284fb6 100644 --- a/include/wx/list.h +++ b/include/wx/list.h @@ -6,7 +6,7 @@ // Created: 29/01/98 // RCS-ID: $Id$ // Copyright: (c) 1998 Julian Smart -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// /* @@ -37,11 +37,7 @@ #include "wx/object.h" #include "wx/string.h" -// due to circular header dependencies this function has to be declared here -// (normally it's found in utils.h which includes itself list.h...) -extern WXDLLEXPORT wxChar* copystring(const wxChar *s); - -class WXDLLEXPORT wxObjectListNode; +class WXDLLIMPEXP_BASE wxObjectListNode; typedef wxObjectListNode wxNode; // undef it to get rid of old, deprecated functions @@ -88,7 +84,7 @@ union wxListKeyValue // for any keyed operation instead of 2 almost equivalent. OTOH, it's needed to // resolve ambiguity which we would otherwise have with wxStringList::Find() and // wxList::Find(const char *). -class WXDLLEXPORT wxListKey +class WXDLLIMPEXP_BASE wxListKey { public: // implicit ctors @@ -129,11 +125,11 @@ private: // wxNodeBase class is a (base for) node in a double linked list // ----------------------------------------------------------------------------- -WXDLLEXPORT_DATA(extern wxListKey) wxDefaultListKey; +WXDLLIMPEXP_DATA_BASE(extern wxListKey) wxDefaultListKey; -class WXDLLEXPORT wxListBase; +class WXDLLIMPEXP_BASE wxListBase; -class WXDLLEXPORT wxNodeBase +class WXDLLIMPEXP_BASE wxNodeBase { friend class wxListBase; public: @@ -155,10 +151,10 @@ public: void SetKeyInteger(long i) { m_key.integer = i; } #ifdef wxLIST_COMPATIBILITY - // compatibility methods - wxNode *Next() const { return (wxNode *)GetNext(); } - wxNode *Previous() const { return (wxNode *)GetPrevious(); } - wxObject *Data() const { return (wxObject *)GetData(); } + // compatibility methods, use Get* instead. + wxDEPRECATED( wxNode *Next() const ); + wxDEPRECATED( wxNode *Previous() const ); + wxDEPRECATED( wxObject *Data() const ); #endif // wxLIST_COMPATIBILITY protected: @@ -191,9 +187,11 @@ private: // a double-linked list class // ----------------------------------------------------------------------------- -class WXDLLEXPORT wxListBase : public wxObject +class wxList; + +class WXDLLIMPEXP_BASE wxListBase : public wxObject { -friend class WXDLLEXPORT wxNodeBase; // should be able to call DetachNode() +friend class WXDLLIMPEXP_BASE wxNodeBase; // should be able to call DetachNode() friend class wxHashTableBase; // should be able to call untyped Find() private: // common part of all ctors @@ -232,10 +230,14 @@ public: { wxASSERT( m_count==0 ); m_keyType = keyType; } #ifdef wxLIST_COMPATIBILITY - int Number() const { return GetCount(); } - wxNode *First() const { return (wxNode *)GetFirst(); } - wxNode *Last() const { return (wxNode *)GetLast(); } - wxNode *Nth(size_t n) const { return (wxNode *)Item(n); } + // compatibility methods from old wxList + wxDEPRECATED( int Number() const ); // use GetCount instead. + wxDEPRECATED( wxNode *First() const ); // use GetFirst + wxDEPRECATED( wxNode *Last() const ); // use GetLast + wxDEPRECATED( wxNode *Nth(size_t n) const ); // use Item + + // kludge for typesafe list migration in core classes. + wxDEPRECATED( operator wxList&() const ); #endif // wxLIST_COMPATIBILITY protected: @@ -502,16 +504,24 @@ private: #ifdef wxLIST_COMPATIBILITY +// define this to make a lot of noise about use of the old wxList classes. +//#define wxWARN_COMPAT_LIST_USE + // ----------------------------------------------------------------------------- // wxList compatibility class: in fact, it's a list of wxObjects // ----------------------------------------------------------------------------- -WX_DECLARE_LIST_2(wxObject, wxObjectList, wxObjectListNode, class WXDLLEXPORT); +WX_DECLARE_LIST_2(wxObject, wxObjectList, wxObjectListNode, class WXDLLIMPEXP_BASE); -class WXDLLEXPORT wxList : public wxObjectList +class WXDLLIMPEXP_BASE wxList : public wxObjectList { public: - wxList(int key_type = wxKEY_NONE) : wxObjectList((wxKeyType)key_type) { } +#ifdef wxWARN_COMPAT_LIST_USE + wxDEPRECATED( wxList(int key_type = wxKEY_NONE) ); +#else + wxList(int key_type = wxKEY_NONE); +#endif + // this destructor is required for Darwin ~wxList() { } @@ -531,15 +541,20 @@ private: // wxStringList class for compatibility with the old code // ----------------------------------------------------------------------------- -WX_DECLARE_LIST_2(wxChar, wxStringListBase, wxStringListNode, class WXDLLEXPORT); +WX_DECLARE_LIST_2(wxChar, wxStringListBase, wxStringListNode, class WXDLLIMPEXP_BASE); -class WXDLLEXPORT wxStringList : public wxStringListBase +class WXDLLIMPEXP_BASE wxStringList : public wxStringListBase { public: // ctors and such // default - wxStringList() { DeleteContents(TRUE); } +#ifdef wxWARN_COMPAT_LIST_USE + wxDEPRECATED( wxStringList() ); + wxDEPRECATED( wxStringList(const wxChar *first ...) ); +#else + wxStringList(); wxStringList(const wxChar *first ...); +#endif // copying the string list: the strings are copied, too (extremely // inefficient!) @@ -549,12 +564,10 @@ public: // operations // makes a copy of the string - wxNode *Add(const wxChar *s) - { return (wxNode *)wxStringListBase::Append(copystring(s)); } + wxNode *Add(const wxChar *s); // Append to beginning of list - wxNode *Prepend(const wxChar *s) - { return (wxNode *)wxStringListBase::Insert(copystring(s)); } + wxNode *Prepend(const wxChar *s); bool Delete(const wxChar *s);