Add wxUSE_STD_CONTAINERS and turn it on by default.

Previously, wxUSE_STL enabled both implicit conversion of wxString to
std::[w]string and use of standard containers for the implementation of their
wx equivalents. Split up the two roles now by allowing to enable the use of
the standard containers independently of (backwards incompatible) implicit
conversion in wxString and actually enable wxUSE_STD_CONTAINERS by default.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67343 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2011-03-30 14:16:04 +00:00
parent 44a0071224
commit 01871bf642
39 changed files with 924 additions and 490 deletions

View File

@@ -33,7 +33,7 @@
#include "wx/object.h"
#include "wx/string.h"
#if wxUSE_STL
#if wxUSE_STD_CONTAINERS
#include "wx/beforestd.h"
#include <algorithm>
#include <iterator>
@@ -48,7 +48,7 @@
class WXDLLIMPEXP_FWD_BASE wxObjectListNode;
typedef wxObjectListNode wxNode;
#if wxUSE_STL
#if wxUSE_STD_CONTAINERS
#define wxLIST_COMPATIBILITY
@@ -346,7 +346,7 @@ inline const void *wxListCastElementToVoidPtr(const wxString& str)
#define WX_DEFINE_EXPORTED_LIST(name) WX_DEFINE_LIST(name)
#define WX_DEFINE_USER_EXPORTED_LIST(name) WX_DEFINE_LIST(name)
#else // if !wxUSE_STL
#else // if !wxUSE_STD_CONTAINERS
// undef it to get rid of old, deprecated functions
@@ -1148,7 +1148,7 @@ private:
#define WX_DEFINE_EXPORTED_LIST(name) WX_DEFINE_LIST(name)
#define WX_DEFINE_USER_EXPORTED_LIST(name) WX_DEFINE_LIST(name)
#endif // !wxUSE_STL
#endif // !wxUSE_STD_CONTAINERS
// ============================================================================
// now we can define classes 100% compatible with the old ones
@@ -1162,7 +1162,7 @@ private:
// inline compatibility functions
#if !wxUSE_STL
#if !wxUSE_STD_CONTAINERS
// ----------------------------------------------------------------------------
// wxNodeBase deprecated methods
@@ -1197,26 +1197,26 @@ WX_DECLARE_LIST_2(wxObject, wxObjectList, wxObjectListNode,
class WXDLLIMPEXP_BASE wxList : public wxObjectList
{
public:
#if defined(wxWARN_COMPAT_LIST_USE) && !wxUSE_STL
#if defined(wxWARN_COMPAT_LIST_USE) && !wxUSE_STD_CONTAINERS
wxList() { };
wxDEPRECATED( wxList(int key_type) );
#elif !wxUSE_STL
#elif !wxUSE_STD_CONTAINERS
wxList(int key_type = wxKEY_NONE);
#endif
// this destructor is required for Darwin
~wxList() { }
#if !wxUSE_STL
#if !wxUSE_STD_CONTAINERS
wxList& operator=(const wxList& list)
{ if (&list != this) Assign(list); return *this; }
// compatibility methods
void Sort(wxSortCompareFunction compfunc) { wxListBase::Sort(compfunc); }
#endif // !wxUSE_STL
#endif // !wxUSE_STD_CONTAINERS
};
#if !wxUSE_STL
#if !wxUSE_STD_CONTAINERS
// -----------------------------------------------------------------------------
// wxStringList class for compatibility with the old code
@@ -1268,7 +1268,7 @@ private:
void DoCopy(const wxStringList&); // common part of copy ctor and operator=
};
#else // if wxUSE_STL
#else // if wxUSE_STD_CONTAINERS
WX_DECLARE_LIST_XO(wxString, wxStringListBase, class WXDLLIMPEXP_BASE);
@@ -1291,7 +1291,7 @@ public:
{ push_front(s); return GetFirst(); }
};
#endif // wxUSE_STL
#endif // wxUSE_STD_CONTAINERS
#endif // wxLIST_COMPATIBILITY