src/compare.c

Fri, 23 May 2025 12:44:24 +0200

author
Mike Becker <universe@uap-core.de>
date
Fri, 23 May 2025 12:44:24 +0200
changeset 1327
ed75dc1db503
parent 1062
8baed9b38bc6
permissions
-rw-r--r--

make test-compile depend on both static and shared

the shared lib is not needed for the tests,
but when run with coverage, gcov will be confused
when outdated line information is available from
a previous shared build

601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
1 /*
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
3 *
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
4 * Copyright 2021 Mike Becker, Olaf Wintermann All rights reserved.
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
5 *
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
6 * Redistribution and use in source and binary forms, with or without
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
7 * modification, are permitted provided that the following conditions are met:
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
8 *
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
9 * 1. Redistributions of source code must retain the above copyright
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
10 * notice, this list of conditions and the following disclaimer.
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
11 *
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
12 * 2. Redistributions in binary form must reproduce the above copyright
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
13 * notice, this list of conditions and the following disclaimer in the
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
14 * documentation and/or other materials provided with the distribution.
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
15 *
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
26 * POSSIBILITY OF SUCH DAMAGE.
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
27 */
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
28
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
29 #include "cx/compare.h"
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
30
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
31 #include <math.h>
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
32
1062
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
33 int cx_vcmp_int(int a, int b) {
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
34 if (a == b) {
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
35 return 0;
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
36 } else {
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
37 return a < b ? -1 : 1;
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
38 }
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
39 }
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
40
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
41 int cx_cmp_int(const void *i1, const void *i2) {
678
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
42 int a = *((const int *) i1);
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
43 int b = *((const int *) i2);
1062
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
44 return cx_vcmp_int(a, b);
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
45 }
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
46
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
47 int cx_vcmp_longint(long int a, long int b) {
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
48 if (a == b) {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
49 return 0;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
50 } else {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
51 return a < b ? -1 : 1;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
52 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
53 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
54
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
55 int cx_cmp_longint(const void *i1, const void *i2) {
678
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
56 long int a = *((const long int *) i1);
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
57 long int b = *((const long int *) i2);
1062
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
58 return cx_vcmp_longint(a, b);
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
59 }
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
60
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
61 int cx_vcmp_longlong(long long a, long long b) {
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
62 if (a == b) {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
63 return 0;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
64 } else {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
65 return a < b ? -1 : 1;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
66 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
67 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
68
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
69 int cx_cmp_longlong(const void *i1, const void *i2) {
678
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
70 long long a = *((const long long *) i1);
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
71 long long b = *((const long long *) i2);
1062
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
72 return cx_vcmp_longlong(a, b);
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
73 }
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
74
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
75 int cx_vcmp_int16(int16_t a, int16_t b) {
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
76 if (a == b) {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
77 return 0;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
78 } else {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
79 return a < b ? -1 : 1;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
80 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
81 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
82
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
83 int cx_cmp_int16(const void *i1, const void *i2) {
678
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
84 int16_t a = *((const int16_t *) i1);
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
85 int16_t b = *((const int16_t *) i2);
1062
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
86 return cx_vcmp_int16(a, b);
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
87 }
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
88
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
89 int cx_vcmp_int32(int32_t a, int32_t b) {
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
90 if (a == b) {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
91 return 0;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
92 } else {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
93 return a < b ? -1 : 1;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
94 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
95 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
96
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
97 int cx_cmp_int32(const void *i1, const void *i2) {
678
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
98 int32_t a = *((const int32_t *) i1);
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
99 int32_t b = *((const int32_t *) i2);
1062
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
100 return cx_vcmp_int32(a, b);
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
101 }
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
102
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
103 int cx_vcmp_int64(int64_t a, int64_t b) {
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
104 if (a == b) {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
105 return 0;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
106 } else {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
107 return a < b ? -1 : 1;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
108 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
109 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
110
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
111 int cx_cmp_int64(const void *i1, const void *i2) {
678
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
112 int64_t a = *((const int64_t *) i1);
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
113 int64_t b = *((const int64_t *) i2);
1062
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
114 return cx_vcmp_int64(a, b);
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
115 }
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
116
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
117 int cx_vcmp_uint(unsigned int a, unsigned int b) {
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
118 if (a == b) {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
119 return 0;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
120 } else {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
121 return a < b ? -1 : 1;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
122 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
123 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
124
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
125 int cx_cmp_uint(const void *i1, const void *i2) {
678
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
126 unsigned int a = *((const unsigned int *) i1);
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
127 unsigned int b = *((const unsigned int *) i2);
1062
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
128 return cx_vcmp_uint(a, b);
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
129 }
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
130
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
131 int cx_vcmp_ulongint(unsigned long int a, unsigned long int b) {
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
132 if (a == b) {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
133 return 0;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
134 } else {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
135 return a < b ? -1 : 1;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
136 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
137 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
138
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
139 int cx_cmp_ulongint(const void *i1, const void *i2) {
678
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
140 unsigned long int a = *((const unsigned long int *) i1);
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
141 unsigned long int b = *((const unsigned long int *) i2);
1062
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
142 return cx_vcmp_ulongint(a, b);
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
143 }
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
144
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
145 int cx_vcmp_ulonglong(unsigned long long a, unsigned long long b) {
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
146 if (a == b) {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
147 return 0;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
148 } else {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
149 return a < b ? -1 : 1;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
150 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
151 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
152
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
153 int cx_cmp_ulonglong(const void *i1, const void *i2) {
678
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
154 unsigned long long a = *((const unsigned long long *) i1);
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
155 unsigned long long b = *((const unsigned long long *) i2);
1062
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
156 return cx_vcmp_ulonglong(a, b);
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
157 }
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
158
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
159 int cx_vcmp_uint16(uint16_t a, uint16_t b) {
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
160 if (a == b) {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
161 return 0;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
162 } else {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
163 return a < b ? -1 : 1;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
164 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
165 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
166
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
167 int cx_cmp_uint16(const void *i1, const void *i2) {
678
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
168 uint16_t a = *((const uint16_t *) i1);
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
169 uint16_t b = *((const uint16_t *) i2);
1062
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
170 return cx_vcmp_uint16(a, b);
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
171 }
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
172
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
173 int cx_vcmp_uint32(uint32_t a, uint32_t b) {
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
174 if (a == b) {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
175 return 0;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
176 } else {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
177 return a < b ? -1 : 1;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
178 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
179 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
180
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
181 int cx_cmp_uint32(const void *i1, const void *i2) {
678
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
182 uint32_t a = *((const uint32_t *) i1);
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
183 uint32_t b = *((const uint32_t *) i2);
1062
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
184 return cx_vcmp_uint32(a, b);
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
185 }
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
186
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
187 int cx_vcmp_uint64(uint64_t a, uint64_t b) {
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
188 if (a == b) {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
189 return 0;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
190 } else {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
191 return a < b ? -1 : 1;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
192 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
193 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
194
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
195 int cx_cmp_uint64(const void *i1, const void *i2) {
678
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
196 uint64_t a = *((const uint64_t *) i1);
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
197 uint64_t b = *((const uint64_t *) i2);
1062
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
198 return cx_vcmp_uint64(a, b);
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
199 }
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
200
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
201 int cx_vcmp_float(float a, float b) {
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
202 if (fabsf(a - b) < 1e-6f) {
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
203 return 0;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
204 } else {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
205 return a < b ? -1 : 1;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
206 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
207 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
208
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
209 int cx_cmp_float(const void *f1, const void *f2) {
678
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
210 float a = *((const float *) f1);
78f943d76f50 reformat code
Mike Becker <universe@uap-core.de>
parents: 650
diff changeset
211 float b = *((const float *) f2);
1062
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
212 return cx_vcmp_float(a, b);
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
213 }
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
214
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
215 int cx_vcmp_double(double a, double b) {
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
216 if (fabs(a - b) < 1e-14) {
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
217 return 0;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
218 } else {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
219 return a < b ? -1 : 1;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
220 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
221 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
222
631
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 601
diff changeset
223 int cx_cmp_double(
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
224 const void *d1,
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
225 const void *d2
631
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 601
diff changeset
226 ) {
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 601
diff changeset
227 double a = *((const double *) d1);
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 601
diff changeset
228 double b = *((const double *) d2);
1062
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
229 return cx_vcmp_double(a, b);
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
230 }
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
231
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
232 int cx_vcmp_intptr(intptr_t p1, intptr_t p2) {
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
233 if (p1 == p2) {
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
234 return 0;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
235 } else {
1062
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
236 return p1 < p2 ? -1 : 1;
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
237 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
238 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
239
631
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 601
diff changeset
240 int cx_cmp_intptr(
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
241 const void *ptr1,
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
242 const void *ptr2
631
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 601
diff changeset
243 ) {
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 601
diff changeset
244 intptr_t p1 = *(const intptr_t *) ptr1;
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 601
diff changeset
245 intptr_t p2 = *(const intptr_t *) ptr2;
1062
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
246 return cx_vcmp_intptr(p1, p2);
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
247 }
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
248
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
249 int cx_vcmp_uintptr(uintptr_t p1, uintptr_t p2) {
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
250 if (p1 == p2) {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
251 return 0;
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
252 } else {
631
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 601
diff changeset
253 return p1 < p2 ? -1 : 1;
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
254 }
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
255 }
631
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 601
diff changeset
256
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 601
diff changeset
257 int cx_cmp_uintptr(
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
258 const void *ptr1,
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
259 const void *ptr2
631
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 601
diff changeset
260 ) {
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 601
diff changeset
261 uintptr_t p1 = *(const uintptr_t *) ptr1;
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 601
diff changeset
262 uintptr_t p2 = *(const uintptr_t *) ptr2;
1062
8baed9b38bc6 add cx_vcmp_* family of functions
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
263 return cx_vcmp_uintptr(p1, p2);
631
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 601
diff changeset
264 }
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 601
diff changeset
265
762
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 678
diff changeset
266 int cx_cmp_ptr(
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
267 const void *ptr1,
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
268 const void *ptr2
762
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 678
diff changeset
269 ) {
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 678
diff changeset
270 uintptr_t p1 = (uintptr_t) ptr1;
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 678
diff changeset
271 uintptr_t p2 = (uintptr_t) ptr2;
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 678
diff changeset
272 if (p1 == p2) {
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 678
diff changeset
273 return 0;
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 678
diff changeset
274 } else {
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 678
diff changeset
275 return p1 < p2 ? -1 : 1;
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 678
diff changeset
276 }
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 678
diff changeset
277 }

mercurial