Provided by: libsdl3-doc_3.2.8+ds-1_all bug

NAME

       SDL_qsort_r - Sort an array, passing a userdata pointer to the compare function.

HEADER FILE

       Defined in SDL3/SDL_stdinc.h

SYNOPSIS

       #include "SDL3/SDL.h"

       void SDL_qsort_r(void *base, size_t nmemb, size_t size, SDL_CompareCallback_r compare, void *userdata);

DESCRIPTION

       For example:

              typedef enum {
                  sort_increasing,
                  sort_decreasing,
              } sort_method;

              typedef struct {
                  int key;
                  const char *string;
              } data;

              int SDLCALL compare(const void *userdata, const void *a, const void *b)
              {
                  sort_method method = (sort_method)(uintptr_t)userdata;
                  const data *A = (const data *)a;
                  const data *B = (const data *)b;

                  if (A->key < B->key) {
                      return (method == sort_increasing) ? -1 : 1;
                  } else if (B->key < A->key) {
                      return (method == sort_increasing) ? 1 : -1;
                  } else {
                      return 0;
                  }
              }

              data values[] = {
                  { 3, "third" }, { 1, "first" }, { 2, "second" }
              };

              SDL_qsort_r(values, SDL_arraysize(values), sizeof(values[0]), compare, (const void *)(uintptr_t)sort_increasing);

FUNCTION PARAMETERS

       base   a pointer to the start of the array.

       nmemb  the number of elements in the array.

       size   the size of the elements in the array.

       compare
              a function used to compare elements in the array.

       userdata
              a pointer to pass to the compare function.

THREAD SAFETY

       It is safe to call this function from any thread.

AVAILABILITY

       This function is available since SDL 3.2.0.

SEE ALSO

       (3), SDL_bsearch_r(3), (3), SDL_qsort(3)

Simple Directmedia Layer                            SDL 3.2.8                                     SDL_qsort_r(3)