35#define min(a, b) (a) < (b) ? (a) : (b)
40#define swapcode(TYPE, parmi, parmj, n) { \
41 long i = (n) / sizeof (TYPE); \
42 register TYPE *pi = (TYPE *) (parmi); \
43 register TYPE *pj = (TYPE *) (parmj); \
45 register TYPE t = *pi; \
51#define SWAPINIT(a, es) swaptype = ((char *)a - (char *)0) % sizeof(long) || \
52 es % sizeof(long) ? 2 : es == sizeof(long)? 0 : 1;
64 if (swaptype == 0) { \
65 long t = *(long *)(a); \
66 *(long *)(a) = *(long *)(b); \
69 swapfunc(a, b, es, swaptype)
71#define vecswap(a, b, n) if ((n) > 0) swapfunc(a, b, n, swaptype)
73#define CMP(x, y) (cmp((x), (y)))
78 return CMP(
a,
b) < 0 ?
95 char *
pa, *pb, *pc, *pd, *pl, *
pm, *
pn;
96 int swaptype, swap_cnt;
103 for (pl =
pm; pl > (
char *)
a &&
CMP(pl -
es, pl) > 0;
108 pm = (
char *)
a + (
n / 2) *
es;
111 pn = (
char *)
a + (
n - 1) *
es;
121 pa = pb = (
char *)
a +
es;
123 pc = pd = (
char *)
a + (
n - 1) *
es;
125 while (pb <= pc && (
r =
CMP(pb,
a)) <= 0) {
133 while (pb <= pc && (
r =
CMP(pc,
a)) >= 0) {
150 for (pl =
pm; pl > (
char *)
a &&
CMP(pl -
es, pl) > 0;
161 if ((
r = pb -
pa) >
es)
163 if ((
r = pd - pc) >
es) {
GLdouble GLdouble GLdouble r
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
#define cmp(status, error)
void __cdecl qsort(void *a, size_t n, size_t es, int(__cdecl *cmp)(const void *, const void *))
static __inline void swapfunc(char *a, char *b, intptr_t n, int swaptype)
static __inline char * med3(char *a, char *b, char *c, int(__cdecl *cmp)(const void *, const void *))
#define swapcode(TYPE, parmi, parmj, n)