78 char *pa, *pb, *pc, *pd, *pl, *pm, *pn;
79 int d, r, swaptype, swap_cnt;
85 for (pm = (
char *)a + es; pm < (
char *)a + n * es; pm += es) {
87 pl > (
char *)a &&
CMP(thunk, pl - es, pl) > 0;
95 pm = (
char *)a + (n / 2) * es;
98 pn = (
char *)a + (n - 1) * es;
101 pl =
med3(pl, pl + d, pl + 2 * d, cmp, thunk);
102 pm =
med3(pm - d, pm, pm + d, cmp, thunk);
103 pn =
med3(pn - 2 * d, pn - d, pn, cmp, thunk);
105 pm =
med3(pl, pm, pn, cmp, thunk);
108 pa = pb = (
char *)a + es;
110 pc = pd = (
char *)a + (n - 1) * es;
112 while (pb <= pc && (r =
CMP(thunk, pb, a)) <= 0) {
120 while (pb <= pc && (r =
CMP(thunk, pc, a)) >= 0) {
137 for (pm = (
char *)a + es; pm < (
char *)a + n * es; pm += es) {
139 pl > (
char *)a &&
CMP(thunk, pl - es, pl) > 0;
148 pn = (
char *)a + n * es;
149 r =
min(pa - (
char *)a, pb - pa);
151 r =
min(pd - pc, pn - pd - es);
153 if ((r = pb - pa) > es) {
156 if ((r = pd - pc) > es) {
BLI_INLINE char * med3(char *a, char *b, char *c, BLI_sort_cmp_t cmp, void *thunk)