/* a generic and efficient heap */
-/* Copyright (c) 2004-2005, 2007-2014. The SimGrid Team.
+/* Copyright (c) 2004-2005, 2007-2015. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
return;
}
-
/**
* @brief Extracts from the heap and returns the element with the smallest key.
* \param H the heap we're working on
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.