Added patty_dict_delete()
This commit is contained in:
parent
1bef463d8b
commit
a67c7c057e
2 changed files with 19 additions and 0 deletions
|
@ -41,6 +41,8 @@ void *patty_dict_get(patty_dict *dict, void *key, size_t keysz);
|
|||
|
||||
void *patty_dict_set(patty_dict *dict, void *key, size_t keysz, void *value);
|
||||
|
||||
void *patty_dict_delete(patty_dict *dict, void *key, size_t keysz);
|
||||
|
||||
void patty_dict_destroy(patty_dict *dict);
|
||||
|
||||
#endif /* _PATTY_DICT_H */
|
||||
|
|
17
src/dict.c
17
src/dict.c
|
@ -158,6 +158,23 @@ error_malloc_bucket:
|
|||
return NULL;
|
||||
}
|
||||
|
||||
void *patty_dict_delete(patty_dict *dict, void *key, size_t keysz) {
|
||||
patty_dict_slot *slot;
|
||||
void *value;
|
||||
|
||||
uint32_t hash = patty_hash(key, keysz);
|
||||
|
||||
if ((slot = patty_dict_slot_find(dict, hash)) == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
value = slot->value;
|
||||
|
||||
memset(slot, '\0', sizeof(*slot));
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
static int dict_item_release(void *key, size_t keysz, void *value, void *ctx) {
|
||||
free(value);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue