add h_hashtable_update and h_hashset_put_all
This commit is contained in:
parent
109d60fca3
commit
209bd43f10
2 changed files with 12 additions and 0 deletions
|
|
@ -166,6 +166,16 @@ void h_hashtable_put(HHashTable* ht, const void* key, void* value) {
|
||||||
hte->hashval = hashval;
|
hte->hashval = hashval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void h_hashtable_update(HHashTable *dst, const HHashTable *src) {
|
||||||
|
size_t i;
|
||||||
|
HHashTableEntry *hte;
|
||||||
|
for(i=0; i < src->capacity; i++) {
|
||||||
|
for(hte = &src->contents[i]; hte; hte = hte->next) {
|
||||||
|
h_hashtable_put(dst, hte->key, hte->value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int h_hashtable_present(HHashTable* ht, const void* key) {
|
int h_hashtable_present(HHashTable* ht, const void* key) {
|
||||||
HHashValue hashval = ht->hashFunc(key);
|
HHashValue hashval = ht->hashFunc(key);
|
||||||
#ifdef CONSISTENCY_CHECK
|
#ifdef CONSISTENCY_CHECK
|
||||||
|
|
|
||||||
|
|
@ -250,6 +250,7 @@ void h_slist_free(HSlist *slist);
|
||||||
HHashTable* h_hashtable_new(HArena *arena, HEqualFunc equalFunc, HHashFunc hashFunc);
|
HHashTable* h_hashtable_new(HArena *arena, HEqualFunc equalFunc, HHashFunc hashFunc);
|
||||||
void* h_hashtable_get(HHashTable* ht, const void* key);
|
void* h_hashtable_get(HHashTable* ht, const void* key);
|
||||||
void h_hashtable_put(HHashTable* ht, const void* key, void* value);
|
void h_hashtable_put(HHashTable* ht, const void* key, void* value);
|
||||||
|
void h_hashtable_update(HHashTable* dst, const HHashTable *src);
|
||||||
int h_hashtable_present(HHashTable* ht, const void* key);
|
int h_hashtable_present(HHashTable* ht, const void* key);
|
||||||
void h_hashtable_del(HHashTable* ht, const void* key);
|
void h_hashtable_del(HHashTable* ht, const void* key);
|
||||||
void h_hashtable_free(HHashTable* ht);
|
void h_hashtable_free(HHashTable* ht);
|
||||||
|
|
@ -258,6 +259,7 @@ static inline bool h_hashtable_empty(HHashTable* ht) { return (ht->used == 0); }
|
||||||
typedef HHashTable HHashSet;
|
typedef HHashTable HHashSet;
|
||||||
#define h_hashset_new(a,eq,hash) h_hashtable_new(a,eq,hash)
|
#define h_hashset_new(a,eq,hash) h_hashtable_new(a,eq,hash)
|
||||||
#define h_hashset_put(ht,el) h_hashtable_put(ht, el, NULL)
|
#define h_hashset_put(ht,el) h_hashtable_put(ht, el, NULL)
|
||||||
|
#define h_hashset_put_all(a,b) h_hashtable_update(a, b)
|
||||||
#define h_hashset_present(ht,el) h_hashtable_present(ht,el)
|
#define h_hashset_present(ht,el) h_hashtable_present(ht,el)
|
||||||
#define h_hashset_empty(ht) h_hashtable_empty(ht)
|
#define h_hashset_empty(ht) h_hashtable_empty(ht)
|
||||||
#define h_hashset_del(ht,el) h_hashtable_del(ht,el)
|
#define h_hashset_del(ht,el) h_hashtable_del(ht,el)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue