|
1 # Compare Functions |
|
2 |
|
3 The `compare.h` header file contains a collection of compare functions for various primitive types. |
|
4 |
|
5 They come in two flavors: |
|
6 - prefixed with `cx_vcmp` they are taking the values directly as arguments |
|
7 - prefixed with `cx_cmp` the signature is designed to be compatible with the `cx_compare_func` function pointer type. |
|
8 |
|
9 ## Examples |
|
10 |
|
11 In the following example we use `cx_cmp_int32` as compare function for a `CxList` of `int32_t` values. |
|
12 |
|
13 ```C |
|
14 CxList *list = cxArrayListCreate( |
|
15 cxDefaultAllocator, // use the default stdlib allocator |
|
16 cx_cmp_int32, // the compare function for the elements |
|
17 sizeof(int32_t), // the size of one element |
|
18 256 // reseve space for 256 elements |
|
19 ); |
|
20 ``` |
|
21 |
|
22 In the next example we simply want to compare two `double` values with rounding tolerance. |
|
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. |
|
24 ```C |
|
25 double x = ... |
|
26 |
|
27 if (0 == cx_vcmp(x, 47.11)) { |
|
28 // do something when equal (except tolerance) |
|
29 } |
|
30 ``` |
|
31 |
|
32 ## List of Functions |
|
33 |
|
34 ```C |
|
35 #include <cx/compare.h> |
|
36 |
|
37 // Value Flavour |
|
38 cx_vcmp_double |
|
39 cx_vcmp_float |
|
40 cx_vcmp_int |
|
41 cx_vcmp_int16 |
|
42 cx_vcmp_int32 |
|
43 cx_vcmp_int64 |
|
44 cx_vcmp_intptr |
|
45 cx_vcmp_longint |
|
46 cx_vcmp_longlong |
|
47 cx_vcmp_uint |
|
48 cx_vcmp_uint16 |
|
49 cx_vcmp_uint32 |
|
50 cx_vcmp_uint64 |
|
51 cx_vcmp_uintptr |
|
52 cx_vcmp_ulongint |
|
53 cx_vcmp_ulonglong |
|
54 |
|
55 // Pointer Flavour |
|
56 cx_cmp_double |
|
57 cx_cmp_float |
|
58 cx_cmp_int |
|
59 cx_cmp_int16 |
|
60 cx_cmp_int32 |
|
61 cx_cmp_int64 |
|
62 cx_cmp_intptr |
|
63 cx_cmp_longint |
|
64 cx_cmp_longlong |
|
65 cx_cmp_ptr |
|
66 cx_cmp_uint |
|
67 cx_cmp_uint16 |
|
68 cx_cmp_uint32 |
|
69 cx_cmp_uint64 |
|
70 cx_cmp_uintptr |
|
71 cx_cmp_ulongint |
|
72 cx_cmp_ulonglong |
|
73 ``` |
|
74 |
|
75 <seealso> |
|
76 <category ref="apidoc"> |
|
77 <a href="https://ucx.sourceforge.io/api/compare_8h.html">compare.h</a> |
|
78 </category> |
|
79 </seealso> |