char *test_delete() { bstring deleted = (bstring)Hashmap_delete(map, &test1); mu_assert(deleted != NULL, "Got NULL on delete."); mu_assert(deleted == &expect1, "Should get test1"); bstring result = Hashmap_get(map, &test1); mu_assert(result == NULL, "Should delete."); deleted = (bstring)Hashmap_delete(map, &test2); mu_assert(deleted != NULL, "Got NULL on delete."); mu_assert(deleted == &expect2, "Should get test2"); result = Hashmap_get(map, &test2); mu_assert(result == NULL, "Should delete."); deleted = (bstring)Hashmap_delete(map, &test3); mu_assert(deleted != NULL, "Got NULL on delete."); mu_assert(deleted == &expect3, "Should get test3"); result = Hashmap_get(map, &test3); mu_assert(result == NULL, "Should delete."); return NULL; }
void *PQueue_pop(PQueue *p_queue) { void *item = NULL; PQueueNode *node = BHeap_pop(p_queue->heap); if(node) { Hashmap_delete(p_queue->map, node->item); item = node->item; free(node); } return item; }
int PQueue_push(PQueue *p_queue, void *item, int priority) { PQueueNode *node = malloc(sizeof(PQueueNode)); check_mem(node); node->item = item; node->priority = priority; int rc = Hashmap_set(p_queue->map, item, node); check(rc != -1, "Failed to set hash"); rc = BHeap_insert(p_queue->heap, node); if(rc == -1) { Hashmap_delete(p_queue->map, item); sentinel("Failed to push noe"); } return 1; error: if(node) free(node); return -1; }
void* Object_delete_slot(Object *receiver, bstring slot_name) { return Hashmap_delete(receiver->slots, slot_name); }