Libecoli 0.11.6
Extensible COmmand LIne library
Loading...
Searching...
No Matches
htable.h
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright 2016, Olivier MATZ <zer0@droids-corp.org>
3 */
4
14
15#pragma once
16
17#include <stdbool.h>
18#include <stdint.h>
19#include <stdio.h>
20
22typedef void (*ec_htable_elt_free_t)(void *);
23
25struct ec_htable;
26
28struct ec_htable_elt_ref;
29
36struct ec_htable *ec_htable(void);
37
51void *ec_htable_get(const struct ec_htable *htable, const void *key, size_t key_len);
52
65bool ec_htable_has_key(const struct ec_htable *htable, const void *key, size_t key_len);
66
79int ec_htable_del(struct ec_htable *htable, const void *key, size_t key_len);
80
100 struct ec_htable *htable,
101 const void *key,
102 size_t key_len,
103 void *val,
105);
106
113void ec_htable_free(struct ec_htable *htable);
114
123size_t ec_htable_len(const struct ec_htable *htable);
124
137struct ec_htable *ec_htable_dup(const struct ec_htable *htable);
138
147void ec_htable_force_seed(uint32_t seed);
148
157void ec_htable_dump(FILE *out, const struct ec_htable *htable);
158
179struct ec_htable_elt_ref *ec_htable_iter(const struct ec_htable *htable);
180
189struct ec_htable_elt_ref *ec_htable_iter_next(struct ec_htable_elt_ref *iter);
190
200const void *ec_htable_iter_get_key(const struct ec_htable_elt_ref *iter);
201
211size_t ec_htable_iter_get_key_len(const struct ec_htable_elt_ref *iter);
212
222void *ec_htable_iter_get_val(const struct ec_htable_elt_ref *iter);
223
bool ec_htable_has_key(const struct ec_htable *htable, const void *key, size_t key_len)
Check if the hash table contains this key.
void ec_htable_force_seed(uint32_t seed)
Force a seed for the hash function.
struct ec_htable_elt_ref * ec_htable_iter_next(struct ec_htable_elt_ref *iter)
Make the iterator point to the next element in the hash table.
void(* ec_htable_elt_free_t)(void *)
Callback function for freeing hash table elements.
Definition htable.h:22
struct ec_htable * ec_htable(void)
Create a hash table.
void * ec_htable_iter_get_val(const struct ec_htable_elt_ref *iter)
Get the value of the current element.
void ec_htable_free(struct ec_htable *htable)
Free a hash table and all its objects.
struct ec_htable * ec_htable_dup(const struct ec_htable *htable)
Duplicate a hash table.
size_t ec_htable_iter_get_key_len(const struct ec_htable_elt_ref *iter)
Get the key length of the current element.
int ec_htable_set(struct ec_htable *htable, const void *key, size_t key_len, void *val, ec_htable_elt_free_t free_cb)
Add/replace an object in the hash table.
void * ec_htable_get(const struct ec_htable *htable, const void *key, size_t key_len)
Get a value from the hash table.
const void * ec_htable_iter_get_key(const struct ec_htable_elt_ref *iter)
Get the key of the current element.
struct ec_htable_elt_ref * ec_htable_iter(const struct ec_htable *htable)
Iterate the elements in the hash table.
int ec_htable_del(struct ec_htable *htable, const void *key, size_t key_len)
Delete an object from the hash table.
void ec_htable_dump(FILE *out, const struct ec_htable *htable)
Dump a hash table.
size_t ec_htable_len(const struct ec_htable *htable)
Get the length of a hash table.