From: Mattia Barbon Date: Sun, 13 Mar 2005 17:08:43 +0000 (+0000) Subject: Fixed compilation for GCC 3.4 when wxUSE_STL == 1. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/30bda36c48562097617bda268917253ead20b09b Fixed compilation for GCC 3.4 when wxUSE_STL == 1. Should be compatible with VC6. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32797 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/list.h b/include/wx/list.h index 97a965b246..136aeaf0f3 100644 --- a/include/wx/list.h +++ b/include/wx/list.h @@ -98,27 +98,18 @@ enum wxKeyType #define WX_DECLARE_LIST_WITH_DECL(elT, liT, decl) \ WX_DECLARE_LIST_XO(elT*, liT, decl) +template +class WXDLLIMPEXP_BASE wxList_SortFunction +{ +public: + wxList_SortFunction(wxSortCompareFunction f) : m_f(f) { } + bool operator()(const T& i1, const T& i2) + { return m_f((T*)&i1, (T*)&i2) < 0; } +private: + wxSortCompareFunction m_f; +}; + #define WX_DECLARE_LIST_XO(elT, liT, decl) \ - decl liT; \ - \ - /* Workaround for broken VC6 STL incorrectly requires a std::greater<> */ \ - /* to be passed into std::list::sort() */ \ - template <> \ - struct std::greater \ - { \ - private: \ - wxSortCompareFunction m_CompFunc; \ - public: \ - greater( wxSortCompareFunction compfunc = NULL ) \ - : m_CompFunc( compfunc ) {} \ - bool operator()(const elT X, const elT Y) const \ - { \ - return m_CompFunc ? \ - ( m_CompFunc( X, Y ) < 0 ) : \ - ( X > Y ); \ - } \ - }; \ - \ decl liT : public std::list \ { \ private: \ @@ -269,11 +260,9 @@ enum wxKeyType std::for_each( begin(), end(), DeleteFunction ); \ clear(); \ } \ - \ /* Workaround for broken VC6 std::list::sort() see above */ \ void Sort( wxSortCompareFunction compfunc ) \ - { sort( std::greater( compfunc ) ); } \ - \ + { sort( wxList_SortFunction( compfunc ) ); } \ ~liT() { Clear(); } \ }