X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e068310a5a5fc97c6bd5149f140fbbea134d296d..5caf524dff950e9c312f32788b09d701b3b4f3ca:/include/wx/vector.h diff --git a/include/wx/vector.h b/include/wx/vector.h index ab07ca0f4a..3af683621f 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 @@ -169,19 +176,19 @@ public: wxVector() : m_size(0), m_capacity(0), m_values(NULL) {} - wxVector(size_type size) + wxVector(size_type p_size) : m_size(0), m_capacity(0), m_values(NULL) { - reserve(size); - for ( size_t n = 0; n < size; n++ ) + reserve(p_size); + for ( size_t n = 0; n < p_size; n++ ) push_back(value_type()); } - wxVector(size_type size, const value_type& v) + wxVector(size_type p_size, const value_type& v) : m_size(0), m_capacity(0), m_values(NULL) { - reserve(size); - for ( size_t n = 0; n < size; n++ ) + reserve(p_size); + for ( size_t n = 0; n < p_size; n++ ) push_back(v); } @@ -195,6 +202,13 @@ public: clear(); } + void swap(wxVector& v) + { + wxSwap(m_size, v.m_size); + wxSwap(m_capacity, v.m_capacity); + wxSwap(m_values, v.m_values); + } + void clear() { // call destructors of stored objects: @@ -430,6 +444,40 @@ inline typename wxVector::size_type wxVector::erase(size_type n) } #endif // WXWIN_COMPATIBILITY_2_8 + + +namespace wxPrivate +{ + // This function is a helper for the wxVectorSort function, and should + // not be used directly in user's code. + +template +int wxCMPFUNC_CONV wxVectorSort_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