Skip to content

Commit 70b78c2

Browse files
author
Daniil Anisimov
committed
Refactor the comparator functions.
1 parent 549115e commit 70b78c2

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

utils.c

Lines changed: 19 additions & 11 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy