X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5b1bf4b927630226493504bec19ea7356f8e70ff..1dbdb7cb3a16885ab4749222c48f7bf83a7e0ef3:/src/xbt/heap.c diff --git a/src/xbt/heap.c b/src/xbt/heap.c index 5bfca96009..2d4964aa5f 100644 --- a/src/xbt/heap.c +++ b/src/xbt/heap.c @@ -83,7 +83,8 @@ inline int xbt_heap_size(xbt_heap_t H) */ void xbt_heap_push(xbt_heap_t H, void *content, double key) { - int count = ++(H->count); + H->count += 1; + int count = H->count; int size = H->size; xbt_heap_item_t item; @@ -98,7 +99,6 @@ void xbt_heap_push(xbt_heap_t H, void *content, double key) item->content = content; xbt_heap_increase_key(H, count - 1); XBT_DEBUG("Heap has now %d elements and max elem is %g",xbt_heap_size(H),xbt_heap_maxkey(H)); - return; } /** @@ -158,18 +158,19 @@ void *xbt_heap_remove(xbt_heap_t H, int i) return xbt_heap_pop(H); } + /** @brief Remove an arbitrary element from the heap - * @param H the heap we're working on - * @param content the object you want to add to the heap - * @param key the key associated to this object + * \param H the heap we're working on + * \param content the object you want to remove from the heap + * \param key the key associated to this object + * \return the removed element if found, NULL otherwise */ -void xbt_heap_rm_elm(xbt_heap_t H, void *content, double key) { +void *xbt_heap_rm_elm(xbt_heap_t H, void *content, double key) +{ int i=0; while (i < H->count && (KEY(H, i) != key || CONTENT(H, i) != content)) i++; - if (i == H->count) - return; - xbt_heap_remove(H,i); + return xbt_heap_remove(H, i); } /** @@ -277,5 +278,4 @@ static void xbt_heap_increase_key(xbt_heap_t H, int i) } if (H->update_callback) H->update_callback(items[i].content, i); - return; }