X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/01871bf642aa91f0150285fa71e18151721de8e0..8e77fd8bca165aab9709649d79a7cbc6a172d4e1:/include/wx/list.h diff --git a/include/wx/list.h b/include/wx/list.h index 02453b9fdc..ed34130a16 100644 --- a/include/wx/list.h +++ b/include/wx/list.h @@ -32,6 +32,7 @@ #include "wx/defs.h" #include "wx/object.h" #include "wx/string.h" +#include "wx/vector.h" #if wxUSE_STD_CONTAINERS #include "wx/beforestd.h" @@ -148,21 +149,22 @@ inline const void *wxListCastElementToVoidPtr(const wxString& str) decl _WX_LIST_HELPER_##liT \ { \ typedef elT _WX_LIST_ITEM_TYPE_##liT; \ + typedef std::list BaseListType; \ public: \ + static BaseListType EmptyList; \ static void DeleteFunction( _WX_LIST_ITEM_TYPE_##liT X ); \ }; \ \ WX_LIST_VC6_WORKAROUND(elT, liT, decl) \ - decl liT : public std::list \ + class liT : public std::list \ { \ private: \ typedef std::list BaseListType; \ - static BaseListType EmptyList; \ \ bool m_destroy; \ \ public: \ - decl compatibility_iterator \ + class compatibility_iterator \ { \ private: \ /* Workaround for broken VC6 nested class name resolution */ \ @@ -174,7 +176,7 @@ inline const void *wxListCastElementToVoidPtr(const wxString& str) \ public: \ compatibility_iterator() \ - : m_iter(EmptyList.end()), m_list( NULL ) {} \ + : m_iter(_WX_LIST_HELPER_##liT::EmptyList.end()), m_list( NULL ) {} \ compatibility_iterator( liT* li, iterator i ) \ : m_iter( i ), m_list( li ) {} \ compatibility_iterator( const liT* li, iterator i ) \ @@ -1198,7 +1200,7 @@ class WXDLLIMPEXP_BASE wxList : public wxObjectList { public: #if defined(wxWARN_COMPAT_LIST_USE) && !wxUSE_STD_CONTAINERS - wxList() { }; + wxList() { } wxDEPRECATED( wxList(int key_type) ); #elif !wxUSE_STD_CONTAINERS wxList(int key_type = wxKEY_NONE); @@ -1214,6 +1216,23 @@ public: // compatibility methods void Sort(wxSortCompareFunction compfunc) { wxListBase::Sort(compfunc); } #endif // !wxUSE_STD_CONTAINERS + +#ifndef __VISUALC6__ + template + wxVector AsVector() const + { + wxVector vector(size()); + size_t i = 0; + + for ( const_iterator it = begin(); it != end(); ++it ) + { + vector[i++] = static_cast(*it); + } + + return vector; + } +#endif // !__VISUALC6__ + }; #if !wxUSE_STD_CONTAINERS