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:
@@ -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
|
||||||
|
@@ -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);
|
||||||
|
@@ -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);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -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;
|
||||||
|
Reference in New Issue
Block a user