-static void QuickSort (void* Base, int Lo, int Hi, size_t Size,
+static void QuickSort (register unsigned char* Base, int Lo, int Hi,
+ register size_t Size,
int (*Compare)(const void*, const void*))
/* Internal recursive function. Works with ints, but this shouldn't be
* a problem.
{
int I, J;
- /* Get a char pointer */
- unsigned char* B = Base;
-
/* Quicksort */
while (Hi > Lo) {
I = Lo + Size;
J = Hi;
while (I <= J) {
- while (I <= J && Compare (B + Lo, B + I) >= 0) {
+ while (I <= J && Compare (Base + Lo, Base + I) >= 0) {
I += Size;
}
- while (I <= J && Compare (B + Lo, B + J) < 0) {
+ while (I <= J && Compare (Base + Lo, Base + J) < 0) {
J -= Size;
}
if (I <= J) {
- _swap (B + I, B + J, Size);
+ _swap (Base + I, Base + J, Size);
I += Size;
J -= Size;
}
}
if (J != Lo) {
- _swap (B + J, B + Lo, Size);
+ _swap (Base + J, Base + Lo, Size);
}
if (((unsigned) J) * 2 > (Hi + Lo)) {
QuickSort (Base, J + Size, Hi, Size, Compare);