Don't make wxQsort() extern "C" nor use any special convention for it.

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
This commit is contained in:
Vadim Zeitlin
2011-10-27 21:10:48 +00:00
parent 1da8e6e400
commit 449cc35153
4 changed files with 16 additions and 16 deletions

View File

@@ -588,14 +588,14 @@ WXDLLIMPEXP_BASE bool wxGetDiskSpace(const wxString& path,
extern "C" typedef int (*wxSortCallback)(const void* pItem1,
{ const void* pItem2,
typedef int (wxCMPFUNC_CONV *CMPFUNCDATA)(const void* pItem1, const void* pItem2, const void* user_data); const void* user_data);
}
WXDLLIMPEXP_BASE void wxQsort(void *const pbase, size_t total_elems, WXDLLIMPEXP_BASE void wxQsort(void* pbase, size_t total_elems,
size_t size, CMPFUNCDATA cmp, const void* user_data); size_t size, wxSortCallback cmp,
const void* user_data);
#if wxUSE_GUI // GUI only things from now on #if wxUSE_GUI // GUI only things from now on

View File

@@ -457,7 +457,7 @@ namespace wxPrivate
template<typename T> template<typename T>
struct wxVectorComparator struct wxVectorComparator
{ {
static int wxCMPFUNC_CONV static int
Compare(const void* pitem1, const void* pitem2, const void* ) Compare(const void* pitem1, const void* pitem2, const void* )
{ {
const T& item1 = *reinterpret_cast<const T*>(pitem1); const T& item1 = *reinterpret_cast<const T*>(pitem1);

View File

@@ -496,19 +496,19 @@ void wxPostDelete(wxObject* object);
@header{wx/utils.h} @header{wx/utils.h}
*/ */
extern "C" typedef int (*wxSortCallback)(const void* pItem1, const void* pItem2, const void* user_data);
{
typedef int (wxCMPFUNC_CONV *CMPFUNCDATA)(const void* pItem1, const void* pItem2, const void* user_data);
}
/** /**
Function for performing a qsort operation including a user data Function implementing quick sort algorithm.
parameter.
This function sorts @a total_elems objects of size @a size located at @a
pbase. It uses @a cmp function for comparing them and passes @a user_data
pointer to the comparison function each time it's called.
@header{wx/utils.h} @header{wx/utils.h}
*/ */
void wxQsort(void *const pbase, size_t total_elems, void wxQsort(void* pbase, size_t total_elems,
size_t size, CMPFUNCDATA cmp, const void* user_data); size_t size, wxSortCallback cmp, const void* user_data);
/** /**

View File

@@ -815,7 +815,7 @@ typedef struct
stack size is needed (actually O(1) in this case)! */ stack size is needed (actually O(1) in this case)! */
void wxQsort(void *const pbase, size_t total_elems, void wxQsort(void *const pbase, size_t total_elems,
size_t size, CMPFUNCDATA cmp, const void* user_data) size_t size, wxSortCallback cmp, const void* user_data)
{ {
register char *base_ptr = (char *) pbase; register char *base_ptr = (char *) pbase;
const size_t max_thresh = MAX_THRESH * size; const size_t max_thresh = MAX_THRESH * size;