From 73533d840fa5b37550d6db8945752e65f533bdf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D1=8B=D1=87=D0=BA=D0=BE=D0=B2=20=D0=90=D0=BD=D0=B4?= =?UTF-8?q?=D1=80=D0=B5=D0=B9?= Date: Mon, 17 Apr 2017 12:38:41 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/pip@378 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5 --- src/containers/pideque.h | 2 +- src/containers/pivector.h | 6 +++--- src/core/piincludes.cpp | 5 +++++ src/core/piincludes.h | 2 ++ src/core/piincludes_p.h | 2 ++ 5 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/containers/pideque.h b/src/containers/pideque.h index 29cc4b4b..62b257c5 100755 --- a/src/containers/pideque.h +++ b/src/containers/pideque.h @@ -289,7 +289,7 @@ public: typedef int (*CompareFunc)(const T * , const T * ); static int compare_func(const T * t0, const T * t1) {return (*t0) < (*t1) ? -1 : ((*t0) == (*t1) ? 0 : 1);} - PIDeque & sort(CompareFunc compare = compare_func) {qsort(pid_data + pid_start, pid_size, sizeof(T), (int(*)(const void * , const void * ))compare); return *this;} + PIDeque & sort(CompareFunc compare = compare_func) {piqsort(pid_data + pid_start, pid_size, sizeof(T), (int(*)(const void * , const void * ))compare); return *this;} PIDeque & enlarge(llong pid_size) {llong ns = size_s() + pid_size; if (ns <= 0) clear(); else resize(size_t(ns)); return *this;} diff --git a/src/containers/pivector.h b/src/containers/pivector.h index 441a6995..e4717f32 100755 --- a/src/containers/pivector.h +++ b/src/containers/pivector.h @@ -268,7 +268,7 @@ public: typedef int (*CompareFunc)(const T * , const T * ); static int compare_func(const T * t0, const T * t1) {return (*t0) < (*t1) ? -1 : ((*t0) == (*t1) ? 0 : 1);} - PIVector & sort(CompareFunc compare = compare_func) {qsort(piv_data, piv_size, sizeof(T), (int(*)(const void * , const void * ))compare); return *this;} + PIVector & sort(CompareFunc compare = compare_func) {piqsort(piv_data, piv_size, sizeof(T), (int(*)(const void * , const void * ))compare); return *this;} PIVector & enlarge(llong piv_size) {llong ns = size_s() + piv_size; if (ns <= 0) clear(); else resize(size_t(ns)); return *this;} @@ -469,7 +469,7 @@ public: void resize(uint size, const T & new_type = T()); PIVector & enlarge(uint size); void clear(); - PIVector & sort(CompareFunc compare = compare_func) {qsort(&at(0), _stlc::size(), sizeof(T), (int(*)(const void * , const void * ))compare); return *this;} + PIVector & sort(CompareFunc compare = compare_func) {piqsort(&at(0), _stlc::size(), sizeof(T), (int(*)(const void * , const void * ))compare); return *this;} PIVector & fill(const T & t) {_stlc::assign(_stlc::size(), t); return *this;} T & back(); const T & back() const; @@ -497,7 +497,7 @@ public: #else _CVector & enlarge(int size_) {int ns = size_s() + size_; if (ns <= 0) _stlc::clear(); else _stlc::resize(ns); return *this;} - _CVector & sort(CompareFunc compare = compare_func) {qsort(&at(0), _stlc::size(), sizeof(T), (int(*)(const void * , const void * ))compare); return *this;} + _CVector & sort(CompareFunc compare = compare_func) {piqsort(&at(0), _stlc::size(), sizeof(T), (int(*)(const void * , const void * ))compare); return *this;} _CVector & fill(const T & t) {_stlc::assign(_stlc::size(), t); return *this;} _CVector & pop_front() {_stlc::erase(_stlc::begin()); return *this;} _CVector & push_front(const T & t) {_stlc::insert(_stlc::begin(), t); return *this;} diff --git a/src/core/piincludes.cpp b/src/core/piincludes.cpp index 2eef6634..8af9afcb 100755 --- a/src/core/piincludes.cpp +++ b/src/core/piincludes.cpp @@ -247,3 +247,8 @@ int main(int argc, char * argv[]) { /*! \page using_advanced Advanced using * Sorry, creativity crysis xD */ + + +void piqsort(void * base, size_t num, size_t size, int (*compar)(const void *, const void *)) { + qsort(base, num, size, compar); +} diff --git a/src/core/piincludes.h b/src/core/piincludes.h index 5c0e5483..461c9297 100755 --- a/src/core/piincludes.h +++ b/src/core/piincludes.h @@ -46,6 +46,8 @@ PIString errorString(); void errorClear(); +void piqsort(void* base, size_t num, size_t size, int (*compar)(const void*,const void*)); + /// Return readable version of PIP PIString PIPVersion(); diff --git a/src/core/piincludes_p.h b/src/core/piincludes_p.h index 7f2dfe8e..88800d3a 100644 --- a/src/core/piincludes_p.h +++ b/src/core/piincludes_p.h @@ -30,7 +30,9 @@ typedef void(*PINtSetTimerResolution)(ULONG, BOOLEAN, PULONG); # include #endif #include +#include #include +#include #include #include