X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fadt%2Fpqueue.c;h=0a7702ca3928931affedf9543c734fdb68483d14;hb=f82f9c6ffbe60d0c1988c7687b5bca29429a7c57;hp=a8bf7f8ef106d1f82bea708150001b20f1973cde;hpb=0fbcef83aa6060534172bb13e71cdadb04428806;p=libfirm diff --git a/ir/adt/pqueue.c b/ir/adt/pqueue.c index a8bf7f8ef..0a7702ca3 100644 --- a/ir/adt/pqueue.c +++ b/ir/adt/pqueue.c @@ -27,6 +27,7 @@ #include "array.h" #include "pqueue.h" +#include "error.h" /* * Implements a heap. @@ -58,7 +59,8 @@ struct _pqueue_t { * Enforces the heap characteristics if the queue * starting from element at position @p pos. */ -static void pqueue_heapify(pqueue_t *q, unsigned pos) { +static void pqueue_heapify(pqueue_t *q, unsigned pos) +{ unsigned len = ARR_LEN(q->elems); while (pos * 2 < len) { @@ -88,8 +90,9 @@ static void pqueue_heapify(pqueue_t *q, unsigned pos) { /** * Sifts up a newly inserted element at position @p pos. */ -static void pqueue_sift_up(pqueue_t *q, unsigned pos) { - while(q->elems[pos].priority > q->elems[pos / 2].priority) { +static void pqueue_sift_up(pqueue_t *q, unsigned pos) +{ + while (q->elems[pos].priority > q->elems[pos / 2].priority) { pqueue_el_t tmp; tmp = q->elems[pos]; @@ -100,18 +103,21 @@ static void pqueue_sift_up(pqueue_t *q, unsigned pos) { } } -pqueue_t *new_pqueue(void) { +pqueue_t *new_pqueue(void) +{ pqueue_t *res = XMALLOC(pqueue_t); res->elems = NEW_ARR_F(pqueue_el_t, 0); return res; } -void del_pqueue(pqueue_t *q) { +void del_pqueue(pqueue_t *q) +{ DEL_ARR_F(q->elems); free(q); } -void pqueue_put(pqueue_t *q, void *data, int priority) { +void pqueue_put(pqueue_t *q, void *data, int priority) +{ pqueue_el_t el; el.data = data; @@ -122,16 +128,14 @@ void pqueue_put(pqueue_t *q, void *data, int priority) { pqueue_sift_up(q, ARR_LEN(q->elems) - 1); } -void *pqueue_pop_front(pqueue_t *q) { - switch(ARR_LEN(q->elems)) { +void *pqueue_pop_front(pqueue_t *q) +{ + switch (ARR_LEN(q->elems)) { case 0: - assert(0 && "Attempt to retrieve element from empty priority queue."); - return NULL; - break; + panic("Attempt to retrieve element from empty priority queue."); case 1: ARR_SHRINKLEN(q->elems, 0); return q->elems[0].data; - break; default: { void *data = q->elems[0].data; int len = ARR_LEN(q->elems) - 1; @@ -145,10 +149,12 @@ void *pqueue_pop_front(pqueue_t *q) { } } -int pqueue_length(const pqueue_t *q) { +int pqueue_length(const pqueue_t *q) +{ return ARR_LEN(q->elems); } -int pqueue_empty(const pqueue_t *q) { +int pqueue_empty(const pqueue_t *q) +{ return ARR_LEN(q->elems) == 0; }