X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1b3fdc02915a23586bf2595485db216c892f2e18..12900371925594a27b91457d6db67020eb4df4e5:/src/xbt/heap.c diff --git a/src/xbt/heap.c b/src/xbt/heap.c index 34b12cc593..f2f75bab0f 100644 --- a/src/xbt/heap.c +++ b/src/xbt/heap.c @@ -108,7 +108,6 @@ void xbt_heap_push(xbt_heap_t H, void *content, double key) return; } - /** * @brief Extracts from the heap and returns the element with the smallest key. * \param H the heap we're working on @@ -169,6 +168,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 + */ +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); +} /** * @brief Updates an element of the heap with a new value.