Lines Matching refs:hash

20     .hash = lexbor_hash_make_id,
26 .hash = lexbor_hash_make_id_lower,
32 .hash = lexbor_hash_make_id_upper,
48 .hash = lexbor_hash_make_id,
53 .hash = lexbor_hash_make_id_lower,
58 .hash = lexbor_hash_make_id_upper,
73 lexbor_hash_table_create(lexbor_hash_t *hash) in lexbor_hash_table_create() argument
75 return lexbor_calloc(hash->table_size, sizeof(lexbor_hash_entry_t *)); in lexbor_hash_table_create()
79 lexbor_hash_table_clean(lexbor_hash_t *hash) in lexbor_hash_table_clean() argument
81 memset(hash->table, 0, sizeof(lexbor_hash_t *) * hash->table_size); in lexbor_hash_table_clean()
85 lexbor_hash_table_destroy(lexbor_hash_t *hash) in lexbor_hash_table_destroy() argument
87 if (hash->table != NULL) { in lexbor_hash_table_destroy()
88 return lexbor_free(hash->table); in lexbor_hash_table_destroy()
95 _lexbor_hash_entry_create(lexbor_hash_t *hash, const lexbor_hash_copy_f copy_func, in _lexbor_hash_entry_create() argument
98 lexbor_hash_entry_t *entry = lexbor_dobject_calloc(hash->entries); in _lexbor_hash_entry_create()
105 if (copy_func(hash, entry, key, length) != LXB_STATUS_OK) { in _lexbor_hash_entry_create()
106 lexbor_dobject_free(hash->entries, entry); in _lexbor_hash_entry_create()
120 lexbor_hash_init(lexbor_hash_t *hash, size_t table_size, size_t struct_size) in lexbor_hash_init() argument
125 if (hash == NULL) { in lexbor_hash_init()
135 hash->table_size = table_size; in lexbor_hash_init()
137 hash->entries = lexbor_dobject_create(); in lexbor_hash_init()
138 status = lexbor_dobject_init(hash->entries, chunk_size, struct_size); in lexbor_hash_init()
143 hash->mraw = lexbor_mraw_create(); in lexbor_hash_init()
144 status = lexbor_mraw_init(hash->mraw, chunk_size * 12); in lexbor_hash_init()
149 hash->table = lexbor_hash_table_create(hash); in lexbor_hash_init()
150 if (hash->table == NULL) { in lexbor_hash_init()
154 hash->struct_size = struct_size; in lexbor_hash_init()
160 lexbor_hash_clean(lexbor_hash_t *hash) in lexbor_hash_clean() argument
162 lexbor_dobject_clean(hash->entries); in lexbor_hash_clean()
163 lexbor_mraw_clean(hash->mraw); in lexbor_hash_clean()
164 lexbor_hash_table_clean(hash); in lexbor_hash_clean()
168 lexbor_hash_destroy(lexbor_hash_t *hash, bool destroy_obj) in lexbor_hash_destroy() argument
170 if (hash == NULL) { in lexbor_hash_destroy()
174 hash->entries = lexbor_dobject_destroy(hash->entries, true); in lexbor_hash_destroy()
175 hash->mraw = lexbor_mraw_destroy(hash->mraw, true); in lexbor_hash_destroy()
176 hash->table = lexbor_hash_table_destroy(hash); in lexbor_hash_destroy()
179 return lexbor_free(hash); in lexbor_hash_destroy()
182 return hash; in lexbor_hash_destroy()
186 lexbor_hash_insert(lexbor_hash_t *hash, const lexbor_hash_insert_t *insert, in lexbor_hash_insert() argument
193 hash_id = insert->hash(key, length); in lexbor_hash_insert()
194 table_idx = hash_id % hash->table_size; in lexbor_hash_insert()
196 entry = hash->table[table_idx]; in lexbor_hash_insert()
199 entry = _lexbor_hash_entry_create(hash, insert->copy, key, length); in lexbor_hash_insert()
200 hash->table[table_idx] = entry; in lexbor_hash_insert()
220 entry->next = _lexbor_hash_entry_create(hash, insert->copy, key, length); in lexbor_hash_insert()
226 lexbor_hash_insert_by_entry(lexbor_hash_t *hash, lexbor_hash_entry_t *entry, in lexbor_hash_insert_by_entry() argument
234 hash_id = search->hash(key, length); in lexbor_hash_insert_by_entry()
235 table_idx = hash_id % hash->table_size; in lexbor_hash_insert_by_entry()
237 item = hash->table[table_idx]; in lexbor_hash_insert_by_entry()
240 hash->table[table_idx] = entry; in lexbor_hash_insert_by_entry()
266 lexbor_hash_remove(lexbor_hash_t *hash, const lexbor_hash_search_t *search, in lexbor_hash_remove() argument
269 lexbor_hash_remove_by_hash_id(hash, search->hash(key, length), in lexbor_hash_remove()
274 lexbor_hash_search(lexbor_hash_t *hash, const lexbor_hash_search_t *search, in lexbor_hash_search() argument
277 return lexbor_hash_search_by_hash_id(hash, search->hash(key, length), in lexbor_hash_search()
282 lexbor_hash_remove_by_hash_id(lexbor_hash_t *hash, uint32_t hash_id, in lexbor_hash_remove_by_hash_id() argument
290 table_idx = hash_id % hash->table_size; in lexbor_hash_remove_by_hash_id()
291 entry = hash->table[table_idx]; in lexbor_hash_remove_by_hash_id()
299 hash->table[table_idx] = entry->next; in lexbor_hash_remove_by_hash_id()
306 lexbor_mraw_free(hash->mraw, entry->u.long_str); in lexbor_hash_remove_by_hash_id()
309 lexbor_dobject_free(hash->entries, entry); in lexbor_hash_remove_by_hash_id()
320 lexbor_hash_search_by_hash_id(lexbor_hash_t *hash, uint32_t hash_id, in lexbor_hash_search_by_hash_id() argument
327 entry = hash->table[ hash_id % hash->table_size ]; in lexbor_hash_search_by_hash_id()
400 lexbor_hash_copy(lexbor_hash_t *hash, lexbor_hash_entry_t *entry, in lexbor_hash_copy() argument
409 entry->u.long_str = lexbor_mraw_alloc(hash->mraw, length + 1); in lexbor_hash_copy()
425 lexbor_hash_copy_lower(lexbor_hash_t *hash, lexbor_hash_entry_t *entry, in lexbor_hash_copy_lower() argument
434 entry->u.long_str = lexbor_mraw_alloc(hash->mraw, length + 1); in lexbor_hash_copy_lower()
452 lexbor_hash_copy_upper(lexbor_hash_t *hash, lexbor_hash_entry_t *entry, in lexbor_hash_copy_upper() argument
461 entry->u.long_str = lexbor_mraw_alloc(hash->mraw, length + 1); in lexbor_hash_copy_upper()