Cross Reference: sort.h
xref
: /
dovecot
/
src
/
lib
/
sort.h
Home
History
Annotate
Line#
Navigate
Download
Search
only in
./
#
ifndef
SORT_H
#
define
SORT_H
#
define
INTEGER_CMP
(
name
,
type
) \
static
inline
int
name
(
const
type
*
i1
,
const
type
*
i2
) \
{ \
if
(*
i1
< *
i2
) \
return
-
1
; \
else
if
(*
i1
> *
i2
) \
return
1
; \
else
\
return
0; \
}
INTEGER_CMP
(
uint64_cmp
,
uint64_t
)
INTEGER_CMP
(
uint32_cmp
,
uint32_t
)
#
define
i_qsort
(
base
,
nmemb
,
size
,
cmp
) \
qsort
(
base
,
nmemb
,
size
+ \
CALLBACK_TYPECHECK
(
cmp
,
int
(*)(
typeof
(
const
typeof
(*
base
) *), \
typeof
(
const
typeof
(*
base
) *))), \
(
int
(*)(
const
void
*,
const
void
*))
cmp
)
#
define
i_bsearch
(
key
,
base
,
nmemb
,
size
,
cmp
) \
bsearch
(
key
,
base
,
nmemb
,
size
+ \
CALLBACK_TYPECHECK
(
cmp
,
int
(*)(
typeof
(
const
typeof
(*
key
) *), \
typeof
(
const
typeof
(*
base
) *))), \
(
int
(*)(
const
void
*,
const
void
*))
cmp
)
int
bsearch_strcmp
(
const
char
*
key
,
const
char
*
const
*
member
)
ATTR_PURE
;
int
bsearch_strcasecmp
(
const
char
*
key
,
const
char
*
const
*
member
)
ATTR_PURE
;
#
endif