Skip to content

Commit 1e2e081

Browse files
author
Daniil Anisimov
committed
Refactor the comparator functions.
1 parent 6587780 commit 1e2e081

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

utils.c

+19-11
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,14 @@ static int argsort_cmp(const void *a, const void *b);
3232
* Function for qsorting an integer arrays
3333
*/
3434
int
35-
int_cmp(const void *a, const void *b)
35+
int_cmp(const void *arg1, const void *arg2)
3636
{
37-
if (*(int *) a < *(int *) b)
37+
int v1 = *((const int *) arg1);
38+
int v2 = *((const int *) arg2);
39+
40+
if (v1 < v2)
3841
return -1;
39-
else if (*(int *) a > *(int *) b)
42+
else if (v1 > v2)
4043
return 1;
4144
else
4245
return 0;
@@ -46,11 +49,14 @@ int_cmp(const void *a, const void *b)
4649
* Function for qsorting an double arrays
4750
*/
4851
int
49-
double_cmp(const void *a, const void *b)
52+
double_cmp(const void *arg1, const void *arg2)
5053
{
51-
if (*(double *) a < *(double *) b)
54+
double v1 = *((const double *) arg1);
55+
double v2 = *((const double *) arg2);
56+
57+
if (v1 < v2)
5258
return -1;
53-
else if (*(double *) a > *(double *) b)
59+
else if (v1 > v2)
5460
return 1;
5561
else
5662
return 0;
@@ -60,12 +66,14 @@ double_cmp(const void *a, const void *b)
6066
* Compares elements for two given indexes
6167
*/
6268
int
63-
argsort_cmp(const void *a, const void *b)
69+
argsort_cmp(const void *arg1, const void *arg2)
6470
{
65-
return (*argsort_value_cmp) ((char *) argsort_a +
66-
*((int *) a) * argsort_es,
67-
(char *) argsort_a +
68-
*((int *) b) * argsort_es);
71+
int idx1 = *((const int *) arg1);
72+
int idx2 = *((const int *) arg2);
73+
char *arr = (char *) argsort_a;
74+
75+
return (*argsort_value_cmp) (&arr[idx1 * argsort_es],
76+
&arr[idx2 * argsort_es]);
6977
}
7078

7179
/*

0 commit comments

Comments
 (0)