79 char *pa, *pb, *pc, *pd, *pl, *pm, *pn;
80 int d, r, swaptype, swap_cnt;
86 for (pm = (
char *)a + es; pm < (
char *)a + n * es; pm += es) {
88 pl > (
char *)a &&
CMP(thunk, pl - es, pl) > 0;
96 pm = (
char *)a + (n / 2) * es;
99 pn = (
char *)a + (n - 1) * es;
102 pl =
med3(pl, pl + d, pl + 2 * d, cmp, thunk);
103 pm =
med3(pm - d, pm, pm + d, cmp, thunk);
104 pn =
med3(pn - 2 * d, pn - d, pn, cmp, thunk);
106 pm =
med3(pl, pm, pn, cmp, thunk);
109 pa = pb = (
char *)a + es;
111 pc = pd = (
char *)a + (n - 1) * es;
113 while (pb <= pc && (r =
CMP(thunk, pb, a)) <= 0) {
121 while (pb <= pc && (r =
CMP(thunk, pc, a)) >= 0) {
138 for (pm = (
char *)a + es; pm < (
char *)a + n * es; pm += es) {
140 pl > (
char *)a &&
CMP(thunk, pl - es, pl) > 0;
149 pn = (
char *)a + n * es;
150 r =
min(pa - (
char *)a, pb - pa);
152 r =
min(pd - pc, pn - pd - es);
154 if ((r = pb - pa) > es) {
157 if ((r = pd - pc) > es) {
char * med3(char *a, char *b, char *c, BLI_sort_cmp_t cmp, void *thunk)