159 } else { |
159 } else { |
160 return a < b ? -1 : 1; |
160 return a < b ? -1 : 1; |
161 } |
161 } |
162 } |
162 } |
163 |
163 |
164 int cx_cmp_double(void const *d1, void const *d2) { |
164 int cx_cmp_double( |
165 double a = *((const double*) d1); |
165 void const *d1, |
166 double b = *((const double*) d2); |
166 void const *d2 |
|
167 ) { |
|
168 double a = *((const double *) d1); |
|
169 double b = *((const double *) d2); |
167 if (fabs(a - b) < 1e-14) { |
170 if (fabs(a - b) < 1e-14) { |
168 return 0; |
171 return 0; |
169 } else { |
172 } else { |
170 return a < b ? -1 : 1; |
173 return a < b ? -1 : 1; |
171 } |
174 } |
172 } |
175 } |
173 |
176 |
174 int cx_cmp_ptr(void const *ptr1, void const *ptr2) { |
177 int cx_cmp_intptr( |
175 const intptr_t p1 = (const intptr_t) ptr1; |
178 void const *ptr1, |
176 const intptr_t p2 = (const intptr_t) ptr2; |
179 void const *ptr2 |
|
180 ) { |
|
181 intptr_t p1 = *(const intptr_t *) ptr1; |
|
182 intptr_t p2 = *(const intptr_t *) ptr2; |
177 if (p1 == p2) { |
183 if (p1 == p2) { |
178 return 0; |
184 return 0; |
179 } else { |
185 } else { |
180 return p1 < p2 ? -1 : 1; |
186 return p1 < p2 ? -1 : 1; |
181 } |
187 } |
182 } |
188 } |
|
189 |
|
190 int cx_cmp_uintptr( |
|
191 void const *ptr1, |
|
192 void const *ptr2 |
|
193 ) { |
|
194 uintptr_t p1 = *(const uintptr_t *) ptr1; |
|
195 uintptr_t p2 = *(const uintptr_t *) ptr2; |
|
196 if (p1 == p2) { |
|
197 return 0; |
|
198 } else { |
|
199 return p1 < p2 ? -1 : 1; |
|
200 } |
|
201 } |
|
202 |