32 if (!(cmp(
a, b) > 0)) {
33 if (!(cmp(b, c) > 0)) {
42 if (!(cmp(c, b) > 0)) {
54 zend_sort_3(
a, b, c, cmp, swp);
68 zend_sort_4(
a, b, c, d, cmp, swp);
90 zend_sort_2(base, (
char *)base + siz, cmp, swp);
93 zend_sort_3(base, (
char *)base + siz, (
char *)base + siz + siz, cmp, swp);
97 size_t siz2 = siz + siz;
98 zend_sort_4(base, (
char *)base + siz, (
char *)base + siz2, (
char *)base + siz + siz2, cmp, swp);
103 size_t siz2 = siz + siz;
104 zend_sort_5(base, (
char *)base + siz, (
char *)base + siz2, (
char *)base + siz + siz2, (
char *)base + siz2 + siz2, cmp, swp);
110 char *
start = (
char *)base;
112 size_t siz2= siz + siz;
113 char *sentry =
start + (6 * siz);
114 for (i =
start + siz; i < sentry; i += siz) {
116 if (!(cmp(
j, i) > 0)) {
121 if (!(cmp(
j, i) > 0)) {
126 for (k = i; k >
j; k -= siz) {
130 for (i = sentry; i <
end; i += siz) {
132 if (!(cmp(
j, i) > 0)) {
137 if (!(cmp(
j, i) > 0)) {
139 if (!(cmp(
j, i) > 0)) {
155 for (k = i; k >
j; k -= siz) {
256 char *
start = (
char *)base;
261 if ((nmemb >>
Z_L(10))) {
263 zend_sort_5(
start,
start + delta, pivot, pivot + delta,
end - siz, cmp, swp);
265 zend_sort_3(
start, pivot,
end - siz, cmp, swp);
267 swp(
start + siz, pivot);
272 while (cmp(pivot, i) > 0) {
282 while (cmp(
j, pivot) > 0) {
299 nmemb = (
end - i)/siz;
302 nmemb = (i -
start)/siz - 1;
unsigned const char * end
#define UNEXPECTED(condition)
ZEND_API void zend_sort(void *base, size_t nmemb, size_t siz, compare_func_t cmp, swap_func_t swp)
ZEND_API void zend_insert_sort(void *base, size_t nmemb, size_t siz, compare_func_t cmp, swap_func_t swp)
int(* compare_func_t)(const void *, const void *)
void(* swap_func_t)(void *, void *)