Don't support this compiler any more, this allows to get rid of tons of
MSVC6-specific workarounds, in particular we can now use Bind() and natural
template functions calls in the library code.
Also remove MSVC6 project and solution files and don't generate them when
bakefile_gen is ran any more (removing the remaining occurrences of msvc6prj
from the bakefiles results in weird bake-time errors, so it's simpler to just
leave them there).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76532 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
We multiplied the number of items by the size of each element twice, once in
wxVector::reserve() itself and once in Ops::Realloc() it called, so we
allocated much more memory than actually needed.
Fix this by passing the number of elements to Ops::Realloc().
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75246 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This will allow to include wx/vector.h from wx/list.h which is itself included
from wx/utils.h by breaking this circular dependency.
Don't use wxMin(), defined in wx/utils.h, in order to do this.
See #14814.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73002 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
It doesn't make sense to require passing C functions to wxQsort() that we
define in a C++ library. We also don't need any special calling convention
here.
Notice that the only existing uses of wxQsort() inside wxWidgets itself were
not actually extern "C" and one of them didn't even use the correct calling
convention.
Also avoid using non-wx-prefixed CMPFUNCDATA identifier in a public header,
rename it to wxSortCallback instead.
Finally make wxQsort() documentation slightly more useful.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69566 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
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 allows the code to compile with VC6 which has trouble with explicit
specification of the template functions instantiation.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63940 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
* reverted VC6 hack in wxIf<>, using helper struct instead of typedef
didn't fix compilation, only caused the compiler to crash instead
of emitting semi-useful errors
* changed wxVector to use typedef for Ops class instead of privately
deriving from wxIf<...>::value; this is enough to make VC6 happy
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51471 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
copying objects in T[] array. This is both more efficient and
matches std::vector<> semantics (erase() destroys the object immediately,
T doesn't have to be default-constructible).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50996 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2. don't allocate memory for every element on the heap, store elements directly in the array instead of storing pointers to them
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48298 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775