diff options
author | 2014-03-26 20:39:02 -0700 | |
---|---|---|
committer | 2014-03-26 20:39:02 -0700 | |
commit | 7d80e3d568554f0c742a41bb9c9af567d71b5b83 (patch) | |
tree | f8ef34eec4ae878da260bf36ba2b367ad79f4937 /src | |
parent | 57cd749c477eb3920f117b1ad3cf11cee89b8c9b (diff) |
Added sort array in place
Diffstat (limited to 'src')
-rw-r--r-- | src/core/basetypes/MCArray.cc | 17 | ||||
-rw-r--r-- | src/core/basetypes/MCArray.h | 1 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/core/basetypes/MCArray.cc b/src/core/basetypes/MCArray.cc index 804f796c..038ec022 100644 --- a/src/core/basetypes/MCArray.cc +++ b/src/core/basetypes/MCArray.cc @@ -229,6 +229,23 @@ Array * Array::sortedArray(int (* compare)(void * a, void * b, void * context), return result; } +void Array::sortArray(int (* compare)(void * a, void * b, void * context), void * context) +{ + struct sortData data; + data.compare = compare; + data.context = context; +#ifdef __MACH__ + qsort_r(carray_data(mArray), carray_count(mArray), + sizeof(* carray_data(mArray)), &data, + (int (*)(void *, const void *, const void *)) sortCompare); +#else + qsort_r(carray_data(mArray), carray_count(mArray), + sizeof(* carray_data(mArray)), + (int (*)(const void *, const void *, void *)) sortCompare, + &data); +#endif +} + String * Array::componentsJoinedByString(String * delimiter) { String * result = String::string(); diff --git a/src/core/basetypes/MCArray.h b/src/core/basetypes/MCArray.h index 6ee64792..82e9760a 100644 --- a/src/core/basetypes/MCArray.h +++ b/src/core/basetypes/MCArray.h @@ -36,6 +36,7 @@ namespace mailcore { virtual bool containsObject(Object * obj); virtual Array * sortedArray(int (* compare)(void * a, void * b, void * context), void * context); + virtual void sortArray(int (* compare)(void * a, void * b, void * context), void * context); virtual String * componentsJoinedByString(String * delimiter); public: // subclass behavior |