X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fasort%2Fasort.h;h=43b0f89c3c6b8e3bd28686c2cf909b5515a908f0;hb=f08b8139fc7370224c59bc3178b887810b98592b;hp=1139238e197d82c269ba5ac972295c6d4a22d5d1;hpb=009f261242b7e1f5482e097315c82a4185a708bf;p=ccan diff --git a/ccan/asort/asort.h b/ccan/asort/asort.h index 1139238e..43b0f89c 100644 --- a/ccan/asort/asort.h +++ b/ccan/asort/asort.h @@ -1,6 +1,8 @@ +/* Licensed under LGPLv2.1+ - see LICENSE file for details */ #ifndef CCAN_ASORT_H #define CCAN_ASORT_H -#include +#include "config.h" +#include #include /** @@ -16,22 +18,15 @@ * The @cmp function should exactly match the type of the @base and * @ctx arguments. Otherwise it can take three const void *. */ -#if HAVE_TYPEOF #define asort(base, num, cmp, ctx) \ _asort((base), (num), sizeof(*(base)), \ - cast_if_type((cmp), \ - int (*)(const __typeof__(*(base)) *, \ - const __typeof__(*(base)) *, \ - __typeof__(ctx)), \ - int (*)(const void *, const void *, const void *)), (ctx)) -#else -#define asort(base, num, cmp, ctx) \ - _asort((base), (num), sizeof(*(base)), \ - (int (*)(const void *, const void *, const void *))(cmp), ctx) -#endif + total_order_cast((cmp), *(base), (ctx)), (ctx)) +#if HAVE_QSORT_R_PRIVATE_LAST +#define _asort(b, n, s, cmp, ctx) qsort_r(b, n, s, cmp, ctx) +#else void _asort(void *base, size_t nmemb, size_t size, - int(*compar)(const void *, const void *, const void *), - const void *ctx); + _total_order_cb compar, void *ctx); +#endif #endif /* CCAN_ASORT_H */