#include #include #include // ----------------------------------------------------------------------- // ints void sort·ints(uintptr sz, int arr[]) { int tmp; #define LESS(i, j) (arr[i] < arr[j]) #define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp) QSORT(sz, LESS, SWAP); #undef SWAP #undef LESS } void sort·int8s(uintptr sz, int8 arr[]) { int8 tmp; #define LESS(i, j) (arr[i] < arr[j]) #define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp) QSORT(sz, LESS, SWAP); #undef SWAP #undef LESS } void sort·int16s(uintptr sz, int16 arr[]) { int16 tmp; #define LESS(i, j) (arr[i] < arr[j]) #define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp) QSORT(sz, LESS, SWAP); #undef SWAP #undef LESS } void sort·int32s(uintptr sz, int32 arr[]) { int32 tmp; #define LESS(i, j) (arr[i] < arr[j]) #define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp) QSORT(sz, LESS, SWAP); #undef SWAP #undef LESS } void sort·int64s(uintptr sz, int64 arr[]) { int64 tmp; #define LESS(i, j) (arr[i] < arr[j]) #define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp) QSORT(sz, LESS, SWAP); #undef SWAP #undef LESS } void sort·uints(uintptr sz, uint arr[]) { uint tmp; #define LESS(i, j) (arr[i] < arr[j]) #define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp) QSORT(sz, LESS, SWAP); #undef SWAP #undef LESS } void sort·uint8s(uintptr sz, uint8 arr[]) { uint8 tmp; #define LESS(i, j) (arr[i] < arr[j]) #define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp) QSORT(sz, LESS, SWAP); #undef SWAP #undef LESS } void sort·uint16s(uintptr sz, uint16 arr[]) { uint16 tmp; #define LESS(i, j) (arr[i] < arr[j]) #define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp) QSORT(sz, LESS, SWAP); #undef SWAP #undef LESS } void sort·uint32s(uintptr sz, uint32 arr[]) { uint32 tmp; #define LESS(i, j) (arr[i] < arr[j]) #define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp) QSORT(sz, LESS, SWAP); #undef SWAP #undef LESS } void sort·uint64s(uintptr sz, uint64 arr[]) { uint64 tmp; #define LESS(i, j) (arr[i] < arr[j]) #define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp) QSORT(sz, LESS, SWAP); #undef SWAP #undef LESS } // ----------------------------------------------------------------------- // floats void sort·floats(uintptr sz, float arr[]) { float tmp; #define LESS(i, j) (arr[i] < arr[j]) #define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp) QSORT(sz, LESS, SWAP); #undef SWAP #undef LESS } void sort·doubles(uintptr sz, double arr[]) { double tmp; #define LESS(i, j) (arr[i] < arr[j]) #define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp) QSORT(sz, LESS, SWAP); #undef SWAP #undef LESS } // ----------------------------------------------------------------------- // strings void sort·strings(uintptr sz, byte* arr[]) { byte *tmp; #define LESS(i, j) (strcmp(arr[i], arr[j]) < 0) #define SWAP(i, j) (tmp = arr[i], arr[i] = arr[j], arr[j] = tmp) QSORT(sz, LESS, SWAP); #undef SWAP #undef LESS }