From 5bff20ea62706b05f599e915da0a5934bd520d0c Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 28 Sep 2021 15:14:50 +0900 Subject: [PATCH] prioq: introduce prioq_ensure_put() --- src/basic/prioq.c | 10 ++++++++++ src/basic/prioq.h | 1 + 2 files changed, 11 insertions(+) diff --git a/src/basic/prioq.c b/src/basic/prioq.c index 559e5d124d..c15dcb26af 100644 --- a/src/basic/prioq.c +++ b/src/basic/prioq.c @@ -173,6 +173,16 @@ 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 r; + + r = prioq_ensure_allocated(q, compare_func); + if (r < 0) + return r; + + return prioq_put(*q, data, idx); +} + static void remove_item(Prioq *q, struct prioq_item *i) { struct prioq_item *l; diff --git a/src/basic/prioq.h b/src/basic/prioq.h index 7c76647611..508db88026 100644 --- a/src/basic/prioq.h +++ b/src/basic/prioq.h @@ -16,6 +16,7 @@ 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_remove(Prioq *q, void *data, unsigned *idx); int prioq_reshuffle(Prioq *q, void *data, unsigned *idx); -- 2.25.1