SDB_API bool ls_delete_data(SdbList *list, void *ptr) { void *kvp; SdbListIter *iter; ls_foreach (list, iter, kvp) { if (ptr == kvp) { ls_delete (list, iter); return true; } } return false; }
void ht_delete_entry(SdbHash *ht, SdbHashEntry *entry) { if (!entry) return; if (!rehash && entry->iter) { ls_delete (ht->list, entry->iter); entry->iter = NULL; } entry->data = (void *) &deleted_data; ht->entries--; ht->deleted_entries++; }
void ht_delete_entry(SdbHash *ht, SdbHashEntry *entry) { if (!ht || !entry) return; if (!rehash && entry->iter) { ls_delete (ht->list, entry->iter); entry->iter = NULL; } entry->hash = DELETED_HASH; entry->data = NULL; ht->entries--; ht->deleted_entries++; }
void ht_remove_entry(SdbHash *ht, SdbHashEntry *entry) { if (!entry) return; if (!rehash && entry->iter) { // XXX: ls_delete not working wtf ls_delete (ht->list, entry->iter); //free (entry->iter); entry->iter = NULL; } entry->data = (void *) &deleted_data; ht->entries--; ht->deleted_entries++; }
SDB_API void ls_destroy(SdbList *list) { SdbListIter *it; if (!list) { return; } it = list->head; while (it) { SdbListIter *next = it->n; ls_delete (list, it); it = next; } list->head = list->tail = NULL; list->length = 0; }
R_API void ls_destroy (SdbList *list) { SdbListIter *it; if (list) { it = list->head; while (it) { SdbListIter *next = it->n; ls_delete (list, it); it = next; // free (it); } list->head = list->tail = NULL; list->length = 0; } //free (list); }
assert( 0 == ls_exists(set, key_3) ); assert( ls_exists(set, key_2) ); assert( ls_insert(set, key_3) ); assert( 3 == ls_nelems(set) ); assert( ls_exists(set, key_3) ); puts("testing delete"); puts("one delete"); assert( ls_delete(set, key_1) ); assert( 2 == ls_nelems(set) ); /* should not be able to re-delete */ assert( 0 == ls_delete(set, key_1) ); puts("two delete"); assert( ls_delete(set, key_3) ); assert( 1 == ls_nelems(set) ); /* should not be able to re-delete */ assert( 0 == ls_delete(set, key_3) ); puts("three delete"); assert( ls_delete(set, key_2) ); assert( 0 == ls_nelems(set) ); /* should not be able to re-delete */