X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/137b730319c304f99a7b0dcd441c0fe332aa11b2..f96b10c283479129b2adfb1b925bf8b39e443bdd:/include/wx/list.h?ds=sidebyside diff --git a/include/wx/list.h b/include/wx/list.h index 0621496821..e5eef865c2 100644 --- a/include/wx/list.h +++ b/include/wx/list.h @@ -25,7 +25,7 @@ #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 @@ -84,16 +84,16 @@ enum wxKeyType #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) \ @@ -119,6 +119,10 @@ enum wxKeyType compatibility_iterator() : m_list( NULL ) { } \ dummy* operator->() { return (dummy*)this; } \ const dummy* operator->() const { return (const dummy*)this; } \ + bool operator==(const compatibility_iterator& it) \ + { return m_list == it.m_list && m_iter == it.m_iter; } \ + bool operator!=(const compatibility_iterator& it) \ + { return m_list != it.m_list || m_iter != it.m_iter; } \ }; \ typedef struct compatibility_iterator citer; \ \ @@ -142,7 +146,7 @@ enum wxKeyType { \ citer* i = (citer*)this; \ it lit = i->m_iter; \ - return citer( i->m_list, ++lit ); \ + return citer( i->m_list, --lit ); \ } \ void SetData( elT e ) \ { \ @@ -211,17 +215,17 @@ enum wxKeyType } #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) @@ -586,6 +590,8 @@ private: { wxNodeBase::SetData(data); } \ \ virtual void DeleteData(); \ + \ + DECLARE_NO_COPY_CLASS(nodetype) \ }; \ \ classexp name : public wxListBase \ @@ -957,9 +963,13 @@ private: 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) @@ -980,29 +990,31 @@ private: #endif // !wxUSE_STL -// ============================================================================= +// ============================================================================ // now we can define classes 100% compatible with the old ones -// ============================================================================= +// ============================================================================ // ---------------------------------------------------------------------------- // commonly used list classes // ---------------------------------------------------------------------------- -#ifdef wxLIST_COMPATIBILITY +#if defined(wxLIST_COMPATIBILITY) // inline compatibility functions -// ----------------------------------------------------------------------------- +#if !wxUSE_STL + +// ---------------------------------------------------------------------------- // wxNodeBase deprecated methods -// ----------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- inline wxNode *wxNodeBase::Next() const { return (wxNode *)GetNext(); } inline wxNode *wxNodeBase::Previous() const { return (wxNode *)GetPrevious(); } inline wxObject *wxNodeBase::Data() const { return (wxObject *)GetData(); } -// ----------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- // wxListBase deprecated methods -// ----------------------------------------------------------------------------- +// ---------------------------------------------------------------------------- inline int wxListBase::Number() const { return (int)GetCount(); } inline wxNode *wxListBase::First() const { return (wxNode *)GetFirst(); } @@ -1010,13 +1022,14 @@ inline wxNode *wxListBase::Last() const { return (wxNode *)GetLast(); } inline wxNode *wxListBase::Nth(size_t n) const { return (wxNode *)Item(n); } inline wxListBase::operator wxList&() const { return *(wxList*)this; } +#endif // 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 WXDLLIMPEXP_BASE); @@ -1025,7 +1038,8 @@ class WXDLLIMPEXP_BASE wxList : public wxObjectList { public: #if defined(wxWARN_COMPAT_LIST_USE) && !wxUSE_STL - wxDEPRECATED( wxList(int key_type = wxKEY_NONE) ); + wxList() { }; + wxDEPRECATED( wxList(int key_type) ); #elif !wxUSE_STL wxList(int key_type = wxKEY_NONE); #endif @@ -1065,7 +1079,7 @@ public: // ctors and such // default #ifdef wxWARN_COMPAT_LIST_USE - wxDEPRECATED( wxStringList() ); + wxStringList(); wxDEPRECATED( wxStringList(const wxChar *first ...) ); #else wxStringList();