1.1 --- a/src/utils.c Wed Aug 07 23:23:58 2019 +0200 1.2 +++ b/src/utils.c Sat Aug 10 08:44:36 2019 +0200 1.3 @@ -113,8 +113,108 @@ 1.4 } 1.5 1.6 int ucx_cmp_longint(const void *i1, const void *i2, void *data) { 1.7 - int a = *((const long int*) i1); 1.8 - int b = *((const long int*) i2); 1.9 + long int a = *((const long int*) i1); 1.10 + long int b = *((const long int*) i2); 1.11 + if (a == b) { 1.12 + return 0; 1.13 + } else { 1.14 + return a < b ? -1 : 1; 1.15 + } 1.16 +} 1.17 + 1.18 +int ucx_cmp_longlong(const void *i1, const void *i2, void *data) { 1.19 + long long a = *((const long long*) i1); 1.20 + long long b = *((const long long*) i2); 1.21 + if (a == b) { 1.22 + return 0; 1.23 + } else { 1.24 + return a < b ? -1 : 1; 1.25 + } 1.26 +} 1.27 + 1.28 +int ucx_cmp_int16(const void *i1, const void *i2, void *data) { 1.29 + int16_t a = *((const int16_t*) i1); 1.30 + int16_t b = *((const int16_t*) i2); 1.31 + if (a == b) { 1.32 + return 0; 1.33 + } else { 1.34 + return a < b ? -1 : 1; 1.35 + } 1.36 +} 1.37 + 1.38 +int ucx_cmp_int32(const void *i1, const void *i2, void *data) { 1.39 + int32_t a = *((const int32_t*) i1); 1.40 + int32_t b = *((const int32_t*) i2); 1.41 + if (a == b) { 1.42 + return 0; 1.43 + } else { 1.44 + return a < b ? -1 : 1; 1.45 + } 1.46 +} 1.47 + 1.48 +int ucx_cmp_int64(const void *i1, const void *i2, void *data) { 1.49 + int64_t a = *((const int64_t*) i1); 1.50 + int64_t b = *((const int64_t*) i2); 1.51 + if (a == b) { 1.52 + return 0; 1.53 + } else { 1.54 + return a < b ? -1 : 1; 1.55 + } 1.56 +} 1.57 + 1.58 +int ucx_cmp_uint(const void *i1, const void *i2, void *data) { 1.59 + unsigned int a = *((const unsigned int*) i1); 1.60 + unsigned int b = *((const unsigned int*) i2); 1.61 + if (a == b) { 1.62 + return 0; 1.63 + } else { 1.64 + return a < b ? -1 : 1; 1.65 + } 1.66 +} 1.67 + 1.68 +int ucx_cmp_ulongint(const void *i1, const void *i2, void *data) { 1.69 + unsigned long int a = *((const unsigned long int*) i1); 1.70 + unsigned long int b = *((const unsigned long int*) i2); 1.71 + if (a == b) { 1.72 + return 0; 1.73 + } else { 1.74 + return a < b ? -1 : 1; 1.75 + } 1.76 +} 1.77 + 1.78 +int ucx_cmp_ulonglong(const void *i1, const void *i2, void *data) { 1.79 + unsigned long long a = *((const unsigned long long*) i1); 1.80 + unsigned long long b = *((const unsigned long long*) i2); 1.81 + if (a == b) { 1.82 + return 0; 1.83 + } else { 1.84 + return a < b ? -1 : 1; 1.85 + } 1.86 +} 1.87 + 1.88 +int ucx_cmp_uint16(const void *i1, const void *i2, void *data) { 1.89 + uint16_t a = *((const uint16_t*) i1); 1.90 + uint16_t b = *((const uint16_t*) i2); 1.91 + if (a == b) { 1.92 + return 0; 1.93 + } else { 1.94 + return a < b ? -1 : 1; 1.95 + } 1.96 +} 1.97 + 1.98 +int ucx_cmp_uint32(const void *i1, const void *i2, void *data) { 1.99 + uint32_t a = *((const uint32_t*) i1); 1.100 + uint32_t b = *((const uint32_t*) i2); 1.101 + if (a == b) { 1.102 + return 0; 1.103 + } else { 1.104 + return a < b ? -1 : 1; 1.105 + } 1.106 +} 1.107 + 1.108 +int ucx_cmp_uint64(const void *i1, const void *i2, void *data) { 1.109 + uint64_t a = *((const uint64_t*) i1); 1.110 + uint64_t b = *((const uint64_t*) i2); 1.111 if (a == b) { 1.112 return 0; 1.113 } else { 1.114 @@ -134,6 +234,66 @@ 1.115 return a - b; 1.116 } 1.117 1.118 +intmax_t ucx_dist_longlong(const void *i1, const void *i2, void *data) { 1.119 + intmax_t a = *((const long long*) i1); 1.120 + intmax_t b = *((const long long*) i2); 1.121 + return a - b; 1.122 +} 1.123 + 1.124 +intmax_t ucx_dist_int16(const void *i1, const void *i2, void *data) { 1.125 + intmax_t a = *((const int16_t*) i1); 1.126 + intmax_t b = *((const int16_t*) i2); 1.127 + return a - b; 1.128 +} 1.129 + 1.130 +intmax_t ucx_dist_int32(const void *i1, const void *i2, void *data) { 1.131 + intmax_t a = *((const int32_t*) i1); 1.132 + intmax_t b = *((const int32_t*) i2); 1.133 + return a - b; 1.134 +} 1.135 + 1.136 +intmax_t ucx_dist_int64(const void *i1, const void *i2, void *data) { 1.137 + intmax_t a = *((const int64_t*) i1); 1.138 + intmax_t b = *((const int64_t*) i2); 1.139 + return a - b; 1.140 +} 1.141 + 1.142 +intmax_t ucx_dist_uint(const void *i1, const void *i2, void *data) { 1.143 + uintmax_t a = *((const unsigned int*) i1); 1.144 + uintmax_t b = *((const unsigned int*) i2); 1.145 + return a > b ? (intmax_t)(a - b) : -(intmax_t)(b - a); 1.146 +} 1.147 + 1.148 +intmax_t ucx_dist_ulongint(const void *i1, const void *i2, void *data) { 1.149 + uintmax_t a = *((const unsigned long int*) i1); 1.150 + uintmax_t b = *((const unsigned long int*) i2); 1.151 + return a > b ? (intmax_t)(a - b) : -(intmax_t)(b - a); 1.152 +} 1.153 + 1.154 +intmax_t ucx_dist_ulonglong(const void *i1, const void *i2, void *data) { 1.155 + uintmax_t a = *((const unsigned long long*) i1); 1.156 + uintmax_t b = *((const unsigned long long*) i2); 1.157 + return a > b ? (intmax_t)(a - b) : -(intmax_t)(b - a); 1.158 +} 1.159 + 1.160 +intmax_t ucx_dist_uint16(const void *i1, const void *i2, void *data) { 1.161 + uintmax_t a = *((const uint16_t*) i1); 1.162 + uintmax_t b = *((const uint16_t*) i2); 1.163 + return a > b ? (intmax_t)(a - b) : -(intmax_t)(b - a); 1.164 +} 1.165 + 1.166 +intmax_t ucx_dist_uint32(const void *i1, const void *i2, void *data) { 1.167 + uintmax_t a = *((const uint32_t*) i1); 1.168 + uintmax_t b = *((const uint32_t*) i2); 1.169 + return a > b ? (intmax_t)(a - b) : -(intmax_t)(b - a); 1.170 +} 1.171 + 1.172 +intmax_t ucx_dist_uint64(const void *i1, const void *i2, void *data) { 1.173 + uintmax_t a = *((const uint64_t*) i1); 1.174 + uintmax_t b = *((const uint64_t*) i2); 1.175 + return a > b ? (intmax_t)(a - b) : -(intmax_t)(b - a); 1.176 +} 1.177 + 1.178 int ucx_cmp_float(const void *f1, const void *f2, void *epsilon) { 1.179 float a = *((const float*) f1); 1.180 float b = *((const float*) f2);