예제 #1
0
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;
}
예제 #2
0
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;
}
예제 #3
0
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;
}
예제 #4
0
파일: object.c 프로젝트: txus/oldterror
void* Object_delete_slot(Object *receiver, bstring slot_name) {
  return Hashmap_delete(receiver->slots, slot_name);
}