#define PRIORITY_QUEUE_OF(type) OSSL_PRIORITY_QUEUE_##type
-#define DEFINE_PRIORITY_QUEUE_OF_INTERNAL(type, ctype) \
- typedef struct ossl_priority_queue_st_##type PRIORITY_QUEUE_OF(type); \
- static ossl_unused ossl_inline PRIORITY_QUEUE_OF(type) * ossl_pqueue_##type##_new(int (*compare)(const ctype *, const ctype *)) \
- { \
- return (PRIORITY_QUEUE_OF(type) *)ossl_pqueue_new( \
- (int (*)(const void *, const void *))compare); \
- } \
- static ossl_unused ossl_inline void \
- ossl_pqueue_##type##_free(PRIORITY_QUEUE_OF(type) * pq) \
- { \
- ossl_pqueue_free((OSSL_PQUEUE *)pq); \
- } \
- static ossl_unused ossl_inline void \
- ossl_pqueue_##type##_pop_free(PRIORITY_QUEUE_OF(type) * pq, \
- void (*freefunc)(ctype *)) \
- { \
- ossl_pqueue_pop_free((OSSL_PQUEUE *)pq, (void (*)(void *))freefunc); \
- } \
- static ossl_unused ossl_inline int \
- ossl_pqueue_##type##_reserve(PRIORITY_QUEUE_OF(type) * pq, size_t n) \
- { \
- return ossl_pqueue_reserve((OSSL_PQUEUE *)pq, n); \
- } \
- static ossl_unused ossl_inline size_t \
- ossl_pqueue_##type##_num(const PRIORITY_QUEUE_OF(type) * pq) \
- { \
- return ossl_pqueue_num((OSSL_PQUEUE *)pq); \
- } \
- static ossl_unused ossl_inline int \
- ossl_pqueue_##type##_push(PRIORITY_QUEUE_OF(type) * pq, \
- ctype * data, size_t *elem) \
- { \
- return ossl_pqueue_push((OSSL_PQUEUE *)pq, (void *)data, elem); \
- } \
- static ossl_unused ossl_inline ctype * \
- ossl_pqueue_##type##_peek(const PRIORITY_QUEUE_OF(type) * pq) \
- { \
- return (type *)ossl_pqueue_peek((OSSL_PQUEUE *)pq); \
- } \
- static ossl_unused ossl_inline ctype * \
- ossl_pqueue_##type##_pop(PRIORITY_QUEUE_OF(type) * pq) \
- { \
- return (type *)ossl_pqueue_pop((OSSL_PQUEUE *)pq); \
- } \
- static ossl_unused ossl_inline ctype * \
- ossl_pqueue_##type##_remove(PRIORITY_QUEUE_OF(type) * pq, \
- size_t elem) \
- { \
- return (type *)ossl_pqueue_remove((OSSL_PQUEUE *)pq, elem); \
- } \
+#define DEFINE_PRIORITY_QUEUE_OF_INTERNAL(type, ctype) \
+ typedef struct ossl_priority_queue_st_##type PRIORITY_QUEUE_OF(type); \
+ static ossl_unused ossl_inline PRIORITY_QUEUE_OF(type) * ossl_pqueue_##type##_new(int (*compare)(const void *, const void *)) \
+ { \
+ return (PRIORITY_QUEUE_OF(type) *)ossl_pqueue_new( \
+ compare); \
+ } \
+ static ossl_unused ossl_inline void \
+ ossl_pqueue_##type##_free(PRIORITY_QUEUE_OF(type) * pq) \
+ { \
+ ossl_pqueue_free((OSSL_PQUEUE *)pq); \
+ } \
+ static ossl_unused ossl_inline void \
+ ossl_pqueue_##type##_pop_free(PRIORITY_QUEUE_OF(type) * pq, \
+ void (*freefunc)(void *)) \
+ { \
+ ossl_pqueue_pop_free((OSSL_PQUEUE *)pq, freefunc); \
+ } \
+ static ossl_unused ossl_inline int \
+ ossl_pqueue_##type##_reserve(PRIORITY_QUEUE_OF(type) * pq, size_t n) \
+ { \
+ return ossl_pqueue_reserve((OSSL_PQUEUE *)pq, n); \
+ } \
+ static ossl_unused ossl_inline size_t \
+ ossl_pqueue_##type##_num(const PRIORITY_QUEUE_OF(type) * pq) \
+ { \
+ return ossl_pqueue_num((OSSL_PQUEUE *)pq); \
+ } \
+ static ossl_unused ossl_inline int \
+ ossl_pqueue_##type##_push(PRIORITY_QUEUE_OF(type) * pq, \
+ ctype * data, size_t *elem) \
+ { \
+ return ossl_pqueue_push((OSSL_PQUEUE *)pq, (void *)data, elem); \
+ } \
+ static ossl_unused ossl_inline ctype * \
+ ossl_pqueue_##type##_peek(const PRIORITY_QUEUE_OF(type) * pq) \
+ { \
+ return (type *)ossl_pqueue_peek((OSSL_PQUEUE *)pq); \
+ } \
+ static ossl_unused ossl_inline ctype * \
+ ossl_pqueue_##type##_pop(PRIORITY_QUEUE_OF(type) * pq) \
+ { \
+ return (type *)ossl_pqueue_pop((OSSL_PQUEUE *)pq); \
+ } \
+ static ossl_unused ossl_inline ctype * \
+ ossl_pqueue_##type##_remove(PRIORITY_QUEUE_OF(type) * pq, \
+ size_t elem) \
+ { \
+ return (type *)ossl_pqueue_remove((OSSL_PQUEUE *)pq, elem); \
+ } \
struct ossl_priority_queue_st_##type
#define DEFINE_PRIORITY_QUEUE_OF(type) \
static size_t num_rec_freed;
-static int size_t_compare(const size_t *a, const size_t *b)
+static int size_t_compare(const void *av, const void *bv)
{
+ const size_t *a = av;
+ const size_t *b = bv;
+
if (*a < *b)
return -1;
if (*a > *b)
return 0;
}
-static int qsort_size_t_compare(const void *a, const void *b)
-{
- return size_t_compare((const size_t *)a, (const size_t *)b);
-}
-
static int qsort_size_t_compare_rev(const void *a, const void *b)
{
- return size_t_compare((const size_t *)b, (const size_t *)a);
+ return size_t_compare(b, a);
}
-static void free_checker(ossl_unused size_t *p)
+static void free_checker(ossl_unused void *p)
{
num_rec_freed++;
}
for (i = 0; i < count; i++)
values[i] = random ? test_random() : (size_t)(count - i);
memcpy(sorted, values, sizeof(*sorted) * count);
- qsort(sorted, count, sizeof(*sorted), &qsort_size_t_compare);
+ qsort(sorted, count, sizeof(*sorted), &size_t_compare);
if (order == 1)
memcpy(values, sorted, sizeof(*values) * count);
}
}
memcpy(sorted, values, sizeof(*sorted) * count);
- qsort(sorted, count, sizeof(*sorted), &qsort_size_t_compare);
+ qsort(sorted, count, sizeof(*sorted), &size_t_compare);
}
for (i = 0; ossl_pqueue_size_t_peek(pq) != NULL; i++)
if (!TEST_size_t_eq(*ossl_pqueue_size_t_peek(pq), sorted[i])
DEFINE_PRIORITY_QUEUE_OF(INFO);
-static int cmp(const INFO *a, const INFO *b)
+static int cmp(const void *av, const void *bv)
{
+ const INFO *a = av;
+ const INFO *b = bv;
+
if (a->seq_num < b->seq_num)
return -1;
if (a->seq_num > b->seq_num)