X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/817270659e986de1b243586d8eb6ad3a76c87480..d7640339e92492ee1ee32384f471cce0f9f169fa:/include/wx/list.h diff --git a/include/wx/list.h b/include/wx/list.h index ad0e88f93d..79f40cd077 100644 --- a/include/wx/list.h +++ b/include/wx/list.h @@ -60,22 +60,6 @@ typedef wxObjectListNode wxNode; // typedef int (* LINKAGEMODE wxListIterateFunction)(void *current); -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -#if !defined(wxENUM_KEY_TYPE_DEFINED) -#define wxENUM_KEY_TYPE_DEFINED - -enum wxKeyType -{ - wxKEY_NONE, - wxKEY_INTEGER, - wxKEY_STRING -}; - -#endif - #if wxUSE_STL #define wxLIST_COMPATIBILITY @@ -93,7 +77,7 @@ enum wxKeyType #define WX_DECLARE_LIST_WITH_DECL(elT, liT, decl) \ WX_DECLARE_LIST_XO(elT*, liT, decl) -#if !defined( __VISUALC__ ) +#if !defined(__VISUALC__) || __VISUALC__ >= 1300 // == !VC6 template class WXDLLIMPEXP_BASE wxList_SortFunction @@ -109,7 +93,7 @@ private: #define WX_LIST_SORTFUNCTION( elT, f ) wxList_SortFunction(f) #define VC6_WORKAROUND(elT, liT, decl) -#else // if defined( __VISUALC__ ) +#else // if defined( __VISUALC__ ) && __VISUALC__ < 1300 // == VC6 #define WX_LIST_SORTFUNCTION( elT, f ) std::greater( f ) #define VC6_WORKAROUND(elT, liT, decl) \ @@ -128,12 +112,19 @@ private: bool operator()(const elT X, const elT Y) const \ { \ return m_CompFunc ? \ - ( m_CompFunc( X, Y ) < 0 ) : \ + ( m_CompFunc( wxListCastElementToVoidPtr(X), \ + wxListCastElementToVoidPtr(Y) ) < 0 ) : \ ( X > Y ); \ } \ }; -#endif // defined( __VISUALC__ ) +// helper for std::greater above: +template +inline const void *wxListCastElementToVoidPtr(const T* ptr) { return ptr; } +inline const void *wxListCastElementToVoidPtr(const wxString& str) + { return (const char*)str; } + +#endif // VC6/!VC6 /* Note 1: the outer helper class _WX_LIST_HELPER_##liT below is a workaround @@ -399,6 +390,10 @@ public: { m_key.integer = i; } wxListKey(const wxString& s) : m_keyType(wxKEY_STRING) { m_key.string = new wxString(s); } + wxListKey(const char *s) : m_keyType(wxKEY_STRING) + { m_key.string = new wxString(s); } + wxListKey(const wchar_t *s) : m_keyType(wxKEY_STRING) + { m_key.string = new wxString(s); } // accessors wxKeyType GetKeyType() const { return m_keyType; } @@ -1029,7 +1024,8 @@ private: iterator insert(const iterator& it, const_reference v = value_type())\ { \ Insert(it.m_node, (const_base_reference)v); \ - return iterator(it.m_node->GetPrevious(), GetLast()); \ + iterator itprev(it); \ + return itprev--; \ } \ void insert(const iterator& it, size_type n, const_reference v = value_type())\ { \ @@ -1217,10 +1213,10 @@ public: // default #ifdef wxWARN_COMPAT_LIST_USE wxStringList(); - wxDEPRECATED( wxStringList(const wxChar *first ...) ); + wxDEPRECATED( wxStringList(const wxChar *first ...) ); // FIXME-UTF8 #else wxStringList(); - wxStringList(const wxChar *first ...); + wxStringList(const wxChar *first ...); // FIXME-UTF8 #endif // copying the string list: the strings are copied, too (extremely