src/cx/compare.h

Sun, 22 Dec 2024 22:10:04 +0100

author
Mike Becker <universe@uap-core.de>
date
Sun, 22 Dec 2024 22:10:04 +0100
changeset 1047
40aad3f0bc9e
parent 985
68754c7de906
permissions
-rw-r--r--

don't trust that size_t always has word width

it should be the case on all platforms supported by UCX, but it's not strictly defined in POSIX that it must be the case

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 * \file compare.h
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
30 * \brief A collection of simple compare functions.
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
31 * \author Mike Becker
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
32 * \author Olaf Wintermann
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
33 * \copyright 2-Clause BSD License
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
34 */
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
35
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
36 #ifndef UCX_COMPARE_H
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
37 #define UCX_COMPARE_H
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
38
650
77021e06b1a8 fix code not compiling under windows+mingw
Mike Becker <universe@uap-core.de>
parents: 631
diff changeset
39 #include "common.h"
77021e06b1a8 fix code not compiling under windows+mingw
Mike Becker <universe@uap-core.de>
parents: 631
diff changeset
40
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
41 #ifdef __cplusplus
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
42 extern "C" {
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
43 #endif
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
44
786
b0ebb3d88407 declare cx_compare_func in compare.h - fixes #344
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
45 /**
b0ebb3d88407 declare cx_compare_func in compare.h - fixes #344
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
46 * A comparator function comparing two collection elements.
b0ebb3d88407 declare cx_compare_func in compare.h - fixes #344
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
47 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
48 cx_attr_nonnull
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
49 cx_attr_nodiscard
786
b0ebb3d88407 declare cx_compare_func in compare.h - fixes #344
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
50 typedef int(*cx_compare_func)(
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
51 const void *left,
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
52 const void *right
786
b0ebb3d88407 declare cx_compare_func in compare.h - fixes #344
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
53 );
b0ebb3d88407 declare cx_compare_func in compare.h - fixes #344
Mike Becker <universe@uap-core.de>
parents: 762
diff changeset
54
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
55 /**
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
56 * Compares two integers of type int.
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
57 *
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
58 * @param i1 pointer to integer one
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
59 * @param i2 pointer to integer two
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
60 * @return -1, if *i1 is less than *i2, 0 if both are equal,
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
61 * 1 if *i1 is greater than *i2
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
62 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
63 cx_attr_nonnull
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
64 cx_attr_nodiscard
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
65 int cx_cmp_int(const void *i1, const void *i2);
601
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 * Compares two integers of type long int.
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
69 *
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
70 * @param i1 pointer to long integer one
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
71 * @param i2 pointer to long integer two
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
72 * @return -1, if *i1 is less than *i2, 0 if both are equal,
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
73 * 1 if *i1 is greater than *i2
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
74 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
75 cx_attr_nonnull
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
76 cx_attr_nodiscard
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
77 int cx_cmp_longint(const void *i1, const void *i2);
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
78
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
79 /**
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
80 * Compares two integers of type long long.
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 * @param i1 pointer to long long one
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
83 * @param i2 pointer to long long two
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
84 * @return -1, if *i1 is less than *i2, 0 if both are equal,
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
85 * 1 if *i1 is greater than *i2
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
86 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
87 cx_attr_nonnull
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
88 cx_attr_nodiscard
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
89 int cx_cmp_longlong(const void *i1, const void *i2);
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
90
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
91 /**
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
92 * Compares two integers of type int16_t.
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
93 *
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
94 * @param i1 pointer to int16_t one
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
95 * @param i2 pointer to int16_t two
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
96 * @return -1, if *i1 is less than *i2, 0 if both are equal,
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
97 * 1 if *i1 is greater than *i2
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
98 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
99 cx_attr_nonnull
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
100 cx_attr_nodiscard
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
101 int cx_cmp_int16(const void *i1, const void *i2);
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
102
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
103 /**
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
104 * Compares two integers of type int32_t.
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
105 *
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
106 * @param i1 pointer to int32_t one
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
107 * @param i2 pointer to int32_t two
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
108 * @return -1, if *i1 is less than *i2, 0 if both are equal,
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
109 * 1 if *i1 is greater than *i2
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
110 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
111 cx_attr_nonnull
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
112 cx_attr_nodiscard
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
113 int cx_cmp_int32(const void *i1, const void *i2);
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
114
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
115 /**
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
116 * Compares two integers of type int64_t.
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
117 *
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
118 * @param i1 pointer to int64_t one
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
119 * @param i2 pointer to int64_t two
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
120 * @return -1, if *i1 is less than *i2, 0 if both are equal,
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
121 * 1 if *i1 is greater than *i2
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
122 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
123 cx_attr_nonnull
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
124 cx_attr_nodiscard
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
125 int cx_cmp_int64(const void *i1, const void *i2);
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
126
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
127 /**
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
128 * Compares two integers of type unsigned int.
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
129 *
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
130 * @param i1 pointer to unsigned integer one
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
131 * @param i2 pointer to unsigned integer two
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
132 * @return -1, if *i1 is less than *i2, 0 if both are equal,
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
133 * 1 if *i1 is greater than *i2
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
134 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
135 cx_attr_nonnull
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
136 cx_attr_nodiscard
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
137 int cx_cmp_uint(const void *i1, const void *i2);
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
138
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
139 /**
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
140 * Compares two integers of type unsigned long int.
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
141 *
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
142 * @param i1 pointer to unsigned long integer one
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
143 * @param i2 pointer to unsigned long integer two
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
144 * @return -1, if *i1 is less than *i2, 0 if both are equal,
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
145 * 1 if *i1 is greater than *i2
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
146 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
147 cx_attr_nonnull
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
148 cx_attr_nodiscard
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
149 int cx_cmp_ulongint(const void *i1, const void *i2);
601
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 * Compares two integers of type unsigned long long.
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
153 *
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
154 * @param i1 pointer to unsigned long long one
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
155 * @param i2 pointer to unsigned long long two
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
156 * @return -1, if *i1 is less than *i2, 0 if both are equal,
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
157 * 1 if *i1 is greater than *i2
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
158 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
159 cx_attr_nonnull
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
160 cx_attr_nodiscard
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
161 int cx_cmp_ulonglong(const void *i1, const void *i2);
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
162
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
163 /**
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
164 * Compares two integers of type uint16_t.
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 * @param i1 pointer to uint16_t one
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
167 * @param i2 pointer to uint16_t two
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
168 * @return -1, if *i1 is less than *i2, 0 if both are equal,
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
169 * 1 if *i1 is greater than *i2
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
170 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
171 cx_attr_nonnull
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
172 cx_attr_nodiscard
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
173 int cx_cmp_uint16(const void *i1, const void *i2);
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
174
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
175 /**
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
176 * Compares two integers of type uint32_t.
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
177 *
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
178 * @param i1 pointer to uint32_t one
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
179 * @param i2 pointer to uint32_t two
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
180 * @return -1, if *i1 is less than *i2, 0 if both are equal,
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
181 * 1 if *i1 is greater than *i2
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
182 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
183 cx_attr_nonnull
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
184 cx_attr_nodiscard
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
185 int cx_cmp_uint32(const void *i1, const void *i2);
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
186
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
187 /**
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
188 * Compares two integers of type uint64_t.
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
189 *
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
190 * @param i1 pointer to uint64_t one
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
191 * @param i2 pointer to uint64_t two
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
192 * @return -1, if *i1 is less than *i2, 0 if both are equal,
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
193 * 1 if *i1 is greater than *i2
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
194 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
195 cx_attr_nonnull
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
196 cx_attr_nodiscard
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
197 int cx_cmp_uint64(const void *i1, const void *i2);
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
198
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
199 /**
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
200 * Compares two real numbers of type float with precision 1e-6f.
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
201 *
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
202 * @param f1 pointer to float one
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
203 * @param f2 pointer to float two
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
204 * @return -1, if *f1 is less than *f2, 0 if both are equal,
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
205 * 1 if *f1 is greater than *f2
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
206 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
207 cx_attr_nonnull
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
208 cx_attr_nodiscard
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
209 int cx_cmp_float(const void *f1, const void *f2);
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
210
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
211 /**
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
212 * Compares two real numbers of type double with precision 1e-14.
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
213 *
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
214 * @param d1 pointer to double one
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
215 * @param d2 pointer to double two
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
216 * @return -1, if *d1 is less than *d2, 0 if both are equal,
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
217 * 1 if *d1 is greater than *d2
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
218 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
219 cx_attr_nonnull
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
220 cx_attr_nodiscard
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
221 int cx_cmp_double(const void *d1, const void *d2);
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
222
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
223 /**
631
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 605
diff changeset
224 * Compares the integer representation of two pointers.
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
225 *
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
226 * @param ptr1 pointer to pointer one (const intptr_t*)
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
227 * @param ptr2 pointer to pointer two (const intptr_t*)
631
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 605
diff changeset
228 * @return -1 if *ptr1 is less than *ptr2, 0 if both are equal,
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 605
diff changeset
229 * 1 if *ptr1 is greater than *ptr2
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
230 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
231 cx_attr_nonnull
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
232 cx_attr_nodiscard
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
233 int cx_cmp_intptr(const void *ptr1, const void *ptr2);
631
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 605
diff changeset
234
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 605
diff changeset
235 /**
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 605
diff changeset
236 * Compares the unsigned integer representation of two pointers.
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 605
diff changeset
237 *
890
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
238 * @param ptr1 pointer to pointer one (const uintptr_t*)
54565fd74e74 move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents: 786
diff changeset
239 * @param ptr2 pointer to pointer two (const uintptr_t*)
631
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 605
diff changeset
240 * @return -1 if *ptr1 is less than *ptr2, 0 if both are equal,
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 605
diff changeset
241 * 1 if *ptr1 is greater than *ptr2
406376e64fd8 tests for compare functions
Mike Becker <universe@uap-core.de>
parents: 605
diff changeset
242 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
243 cx_attr_nonnull
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
244 cx_attr_nodiscard
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
245 int cx_cmp_uintptr(const void *ptr1, const void *ptr2);
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
246
762
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 759
diff changeset
247 /**
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 759
diff changeset
248 * Compares the pointers specified in the arguments without de-referencing.
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 759
diff changeset
249 *
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 759
diff changeset
250 * @param ptr1 pointer one
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 759
diff changeset
251 * @param ptr2 pointer two
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 759
diff changeset
252 * @return -1 if ptr1 is less than ptr2, 0 if both are equal,
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 759
diff changeset
253 * 1 if ptr1 is greater than ptr2
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 759
diff changeset
254 */
985
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
255 cx_attr_nonnull
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
256 cx_attr_nodiscard
68754c7de906 major refactoring of attributes
Mike Becker <universe@uap-core.de>
parents: 890
diff changeset
257 int cx_cmp_ptr(const void *ptr1, const void *ptr2);
762
4523f6d42512 add cx_cmp_ptr() - fix #340
Mike Becker <universe@uap-core.de>
parents: 759
diff changeset
258
601
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
259 #ifdef __cplusplus
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
260 } // extern "C"
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
261 #endif
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
262
95ba6014041b add compare functions
Mike Becker <universe@uap-core.de>
parents:
diff changeset
263 #endif //UCX_COMPARE_H

mercurial