]> git.puffer.fish Git - mirror/frr.git/commitdiff
lib: add removal by item to pqueue 374/head
authorQuentin Young <qlyoung@cumulusnetworks.com>
Mon, 17 Apr 2017 00:06:02 +0000 (00:06 +0000)
committerQuentin Young <qlyoung@cumulusnetworks.com>
Mon, 17 Apr 2017 00:06:02 +0000 (00:06 +0000)
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
lib/pqueue.c
lib/pqueue.h

index 0f870564dab7a032d4a77d63b3cb1746f68e8f86..fa502b462ae4d65adb936b33511979a47be56c01 100644 (file)
@@ -188,3 +188,11 @@ pqueue_remove_at (int index, struct pqueue *queue)
       trickle_down (index, queue);
     }
 }
+
+void
+pqueue_remove (void *data, struct pqueue *queue)
+{
+  for (int i = 0; i < queue->size; i++)
+    if (queue->array[i] == data)
+      pqueue_remove_at (i, queue);
+}
index 8bb6961d8641b295561a1ac2ff7d904ec4a07e71..b39fb92ee9829918695e02d2bc49be86d74800ec 100644 (file)
@@ -39,6 +39,7 @@ extern void pqueue_delete (struct pqueue *queue);
 extern void pqueue_enqueue (void *data, struct pqueue *queue);
 extern void *pqueue_dequeue (struct pqueue *queue);
 extern void pqueue_remove_at (int index, struct pqueue *queue);
+extern void pqueue_remove (void *data, struct pqueue *queue);
 
 extern void trickle_down (int index, struct pqueue *queue);
 extern void trickle_up (int index, struct pqueue *queue);