From aca4240f6a32423df5f95de6a9354b524fe57ec5 Mon Sep 17 00:00:00 2001 From: Derrick Stolee Date: Thu, 1 Nov 2018 13:46:17 +0000 Subject: prio-queue: add 'peek' operation When consuming a priority queue, it can be convenient to inspect the next object that will be dequeued without actually dequeueing it. Our existing library did not have such a 'peek' operation, so add it as prio_queue_peek(). Add a reference-level comparison in t/helper/test-prio-queue.c so this method is exercised by t0009-prio-queue.sh. Further, add a test that checks the behavior when the compare function is NULL (i.e. the queue becomes a stack). Signed-off-by: Derrick Stolee Signed-off-by: Junio C Hamano --- prio-queue.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'prio-queue.c') diff --git a/prio-queue.c b/prio-queue.c index a078451872..d3f488cb05 100644 --- a/prio-queue.c +++ b/prio-queue.c @@ -85,3 +85,12 @@ void *prio_queue_get(struct prio_queue *queue) } return result; } + +void *prio_queue_peek(struct prio_queue *queue) +{ + if (!queue->nr) + return NULL; + if (!queue->compare) + return queue->array[queue->nr - 1].data; + return queue->array[0].data; +} -- cgit v1.2.3