prioq: make prioq_ensure_put() type safe

This commit is contained in:
Yu Watanabe
2025-05-08 05:58:33 +09:00
parent 4699f0e68a
commit f9550d1182
4 changed files with 10 additions and 6 deletions
+1 -1
View File
@@ -169,7 +169,7 @@ int prioq_put(Prioq *q, void *data, unsigned *idx) {
return 0;
}
int prioq_ensure_put(Prioq **q, compare_func_t compare_func, void *data, unsigned *idx) {
int _prioq_ensure_put(Prioq **q, compare_func_t compare_func, void *data, unsigned *idx) {
int r;
r = prioq_ensure_allocated(q, compare_func);
+7 -1
View File
@@ -16,7 +16,13 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(Prioq*, prioq_free);
int prioq_ensure_allocated(Prioq **q, compare_func_t compare_func);
int prioq_put(Prioq *q, void *data, unsigned *idx);
int prioq_ensure_put(Prioq **q, compare_func_t compare_func, void *data, unsigned *idx);
int _prioq_ensure_put(Prioq **q, compare_func_t compare_func, void *data, unsigned *idx);
#define prioq_ensure_put(q, compare_func, data, idx) \
({ \
int (*_func_)(const typeof((data)[0])*, const typeof((data)[0])*) = compare_func; \
_prioq_ensure_put(q, (compare_func_t) _func_, data, idx); \
})
int prioq_remove(Prioq *q, void *data, unsigned *idx);
void prioq_reshuffle(Prioq *q, void *data, unsigned *idx);