X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/dbe0872fc80f7fc9ac37235ab1f8ba8224b0bfa5..e4431849b4f2097edf0e01c5d50bf0ed947befa9:/include/wx/vector.h diff --git a/include/wx/vector.h b/include/wx/vector.h index 28230a9ea5..982cd08626 100644 --- a/include/wx/vector.h +++ b/include/wx/vector.h @@ -17,7 +17,14 @@ #if wxUSE_STL #include +#include + #define wxVector std::vector +template +inline void wxVectorSort(wxVector& v) +{ + std::sort(v.begin(), v.end()); +} #else // !wxUSE_STL @@ -437,6 +444,44 @@ inline typename wxVector::size_type wxVector::erase(size_type n) } #endif // WXWIN_COMPATIBILITY_2_8 + + +namespace wxPrivate +{ + +// This is a helper for the wxVectorSort function, and should not be used +// directly in user's code. +template +struct wxVectorSort +{ + static int wxCMPFUNC_CONV + Compare(const void* pitem1, const void* pitem2, const void* ) + { + const T& item1 = *reinterpret_cast(pitem1); + const T& item2 = *reinterpret_cast(pitem2); + + if (item1 < item2) + return -1; + else if (item2 < item1) + return 1; + else + return 0; + } +}; + +} // namespace wxPrivate + + + +template +void wxVectorSort(wxVector& v) +{ + wxQsort(v.begin(), v.size(), sizeof(T), + wxPrivate::wxVectorSort::Compare, NULL); +} + + + #endif // wxUSE_STL/!wxUSE_STL #if WXWIN_COMPATIBILITY_2_8