3 #include <lal/LALStddef.h>
4 #include <lal/LALStdlib.h>
7 static _LAL_INLINE_ int lt(
void *params,
const void *
a,
const void *b,
int (*compar)(
void *,
const void *,
const void *))
9 return compar(params,
a, b) < 0;
12 static _LAL_INLINE_ int lte(
void *params,
const void *
a,
const void *b,
int (*compar)(
void *,
const void *,
const void *))
14 return compar(params,
a, b) <= 0;
17 int XLALIsSorted(
void *base,
size_t nobj,
size_t size,
void *params,
int (*compar)(
void *,
const void *,
const void *))
24 if (compar(params,
p + size,
p) < 0)
31 ssize_t
XLALSearchSorted(
const void *key,
const void *base,
size_t nobj,
size_t size,
void *params,
int (*compar)(
void *,
const void *,
const void *),
int side)
35 int (*
cmp)(
void *,
const void *,
const void *, int (*)(
void *,
const void *,
const void *)) = side > 0 ?
lte :
lt;
40 size_t i = imin + ((imax - imin) >> 1);
41 if (
cmp(params, (
const char *)base + i * size, key, compar))
46 if (side || (imin < nobj && compar(params, (
const char *)base + imin * size, key) == 0))
static _LAL_INLINE_ int lt(void *params, const void *a, const void *b, int(*compar)(void *, const void *, const void *))
static _LAL_INLINE_ int lte(void *params, const void *a, const void *b, int(*compar)(void *, const void *, const void *))
static int cmp(REAL4Sequence *a, REAL4Sequence *b)
int XLALIsSorted(void *base, size_t nobj, size_t size, void *params, int(*compar)(void *, const void *, const void *))
ssize_t XLALSearchSorted(const void *key, const void *base, size_t nobj, size_t size, void *params, int(*compar)(void *, const void *, const void *), int side)
#define XLAL_CHECK(assertion,...)
Macro to test an assertion and invoke a failure if it is not true in a function that returns an integ...
@ XLAL_EFAULT
Invalid pointer.
@ XLAL_EINVAL
Invalid argument.