Libecoli  0.11.3
Extensible COmmand LIne library
htable.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2016, Olivier MATZ <zer0@droids-corp.org>
3  */
4 
15 #pragma once
16 
17 #include <stdbool.h>
18 #include <stdint.h>
19 #include <stdio.h>
20 
22 typedef void (*ec_htable_elt_free_t)(void *);
23 
25 struct ec_htable;
26 
28 struct ec_htable_elt_ref;
29 
36 struct ec_htable *ec_htable(void);
37 
51 void *ec_htable_get(const struct ec_htable *htable, const void *key, size_t key_len);
52 
65 bool ec_htable_has_key(const struct ec_htable *htable, const void *key, size_t key_len);
66 
79 int 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,
104  ec_htable_elt_free_t free_cb
105 );
106 
113 void ec_htable_free(struct ec_htable *htable);
114 
123 size_t ec_htable_len(const struct ec_htable *htable);
124 
137 struct ec_htable *ec_htable_dup(const struct ec_htable *htable);
138 
147 void ec_htable_force_seed(uint32_t seed);
148 
157 void ec_htable_dump(FILE *out, const struct ec_htable *htable);
158 
179 struct ec_htable_elt_ref *ec_htable_iter(const struct ec_htable *htable);
180 
189 struct ec_htable_elt_ref *ec_htable_iter_next(struct ec_htable_elt_ref *iter);
190 
200 const void *ec_htable_iter_get_key(const struct ec_htable_elt_ref *iter);
201 
211 size_t ec_htable_iter_get_key_len(const struct ec_htable_elt_ref *iter);
212 
222 void *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)
void ec_htable_force_seed(uint32_t seed)
void * ec_htable_iter_get_val(const struct ec_htable_elt_ref *iter)
void(* ec_htable_elt_free_t)(void *)
Definition: htable.h:22
struct ec_htable_elt_ref * ec_htable_iter_next(struct ec_htable_elt_ref *iter)
void * ec_htable_get(const struct ec_htable *htable, const void *key, size_t key_len)
void ec_htable_free(struct ec_htable *htable)
size_t ec_htable_iter_get_key_len(const struct ec_htable_elt_ref *iter)
int ec_htable_set(struct ec_htable *htable, const void *key, size_t key_len, void *val, ec_htable_elt_free_t free_cb)
struct ec_htable_elt_ref * ec_htable_iter(const struct ec_htable *htable)
struct ec_htable * ec_htable_dup(const struct ec_htable *htable)
const void * ec_htable_iter_get_key(const struct ec_htable_elt_ref *iter)
int ec_htable_del(struct ec_htable *htable, const void *key, size_t key_len)
struct ec_htable * ec_htable(void)
void ec_htable_dump(FILE *out, const struct ec_htable *htable)
size_t ec_htable_len(const struct ec_htable *htable)