docs/Writerside/topics/compare.h.md

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 1318
12fa1d37fe48
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

1143
0559812df10c assign proper names to the documentation topics
Mike Becker <universe@uap-core.de>
parents: 1142
diff changeset
1 # Compare Functions
1141
a06a2d27c043 create new page structure
Mike Becker <universe@uap-core.de>
parents:
diff changeset
2
1167
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
3 The `compare.h` header file contains a collection of compare functions for various primitive types.
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
4
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
5 They come in two flavors:
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
6 - prefixed with `cx_vcmp` they are taking the values directly as arguments
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
7 - prefixed with `cx_cmp` the signature is designed to be compatible with the `cx_compare_func` function pointer type.
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
8
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
9 ## Examples
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
10
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
11 In the following example we use `cx_cmp_int32` as compare function for a `CxList` of `int32_t` values.
1146
151c057faf7c add marker to every incomplete page
Mike Becker <universe@uap-core.de>
parents: 1143
diff changeset
12
1167
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
13 ```C
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
14 CxList *list = cxArrayListCreate(
1318
12fa1d37fe48 allow changing the cxDefaultAllocator - resolves #669
Mike Becker <universe@uap-core.de>
parents: 1174
diff changeset
15 cxDefaultAllocator, // use the default allocator
1167
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
16 cx_cmp_int32, // the compare function for the elements
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
17 sizeof(int32_t), // the size of one element
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
18 256 // reseve space for 256 elements
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
19 );
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
20 ```
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
21
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
22 In the next example we simply want to compare two `double` values with rounding tolerance.
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
23 Note how the use of the `cx_vcmp` flavour makes it unnecessary to store the literal in a variable just to be able to take an address.
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
24 ```C
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
25 double x = ...
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
26
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
27 if (0 == cx_vcmp(x, 47.11)) {
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
28 // do something when equal (except tolerance)
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
29 }
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
30 ```
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
31
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
32 ## List of Functions
1142
9437530176bc add symbols that need documentation as TODOs
Mike Becker <universe@uap-core.de>
parents: 1141
diff changeset
33
1167
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
34 ```C
1174
ee473780cc0d add missing documentation about what header to include
Mike Becker <universe@uap-core.de>
parents: 1167
diff changeset
35 #include <cx/compare.h>
ee473780cc0d add missing documentation about what header to include
Mike Becker <universe@uap-core.de>
parents: 1167
diff changeset
36
1167
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
37 // Value Flavour
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
38 cx_vcmp_double
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
39 cx_vcmp_float
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
40 cx_vcmp_int
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
41 cx_vcmp_int16
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
42 cx_vcmp_int32
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
43 cx_vcmp_int64
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
44 cx_vcmp_intptr
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
45 cx_vcmp_longint
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
46 cx_vcmp_longlong
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
47 cx_vcmp_uint
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
48 cx_vcmp_uint16
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
49 cx_vcmp_uint32
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
50 cx_vcmp_uint64
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
51 cx_vcmp_uintptr
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
52 cx_vcmp_ulongint
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
53 cx_vcmp_ulonglong
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
54
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
55 // Pointer Flavour
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
56 cx_cmp_double
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
57 cx_cmp_float
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
58 cx_cmp_int
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
59 cx_cmp_int16
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
60 cx_cmp_int32
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
61 cx_cmp_int64
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
62 cx_cmp_intptr
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
63 cx_cmp_longint
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
64 cx_cmp_longlong
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
65 cx_cmp_ptr
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
66 cx_cmp_uint
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
67 cx_cmp_uint16
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
68 cx_cmp_uint32
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
69 cx_cmp_uint64
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
70 cx_cmp_uintptr
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
71 cx_cmp_ulongint
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
72 cx_cmp_ulonglong
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
73 ```
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
74
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
75 <seealso>
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
76 <category ref="apidoc">
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
77 <a href="https://ucx.sourceforge.io/api/compare_8h.html">compare.h</a>
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
78 </category>
feab7c1e80d4 add documentation for compare.h
Mike Becker <universe@uap-core.de>
parents: 1146
diff changeset
79 </seealso>

mercurial