Home | History | Annotate | Download | only in program

Lines Matching defs:ht

60     struct hash_table *ht;
68 ht = malloc(sizeof(*ht) + ((num_buckets - 1)
69 * sizeof(ht->buckets[0])));
70 if (ht != NULL) {
71 ht->hash = hash;
72 ht->compare = compare;
73 ht->num_buckets = num_buckets;
76 make_empty_list(& ht->buckets[i]);
80 return ht;
85 hash_table_dtor(struct hash_table *ht)
87 hash_table_clear(ht);
88 free(ht);
93 hash_table_clear(struct hash_table *ht)
100 for (i = 0; i < ht->num_buckets; i++) {
101 foreach_s(node, temp, & ht->buckets[i]) {
106 assert(is_empty_list(& ht->buckets[i]));
112 hash_table_find(struct hash_table *ht, const void *key)
114 const unsigned hash_value = (*ht->hash)(key);
115 const unsigned bucket = hash_value % ht->num_buckets;
118 foreach(node, & ht->buckets[bucket]) {
121 if ((*ht->compare)(hn->key, key) == 0) {
131 hash_table_insert(struct hash_table *ht, void *data, const void *key)
133 const unsigned hash_value = (*ht->hash)(key);
134 const unsigned bucket = hash_value % ht->num_buckets;
142 insert_at_head(& ht->buckets[bucket], & node->link);
146 hash_table_remove(struct hash_table *ht, const void *key)
148 const unsigned hash_value = (*ht->hash)(key);
149 const unsigned bucket = hash_value % ht->num_buckets;
152 foreach(node, & ht->buckets[bucket]) {
155 if ((*ht->compare)(hn->key, key) == 0) {