api documentation for ec_parse
[protos/libecoli.git] / src / ecoli_htable_private.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright 2019, Olivier MATZ <zer0@droids-corp.org>
3  */
4
5 #ifndef ECOLI_HTABLE_PRIVATE_
6 #define ECOLI_HTABLE_PRIVATE_
7
8 #include <ecoli_htable.h>
9
10 struct ec_htable_elt {
11         void *key;
12         size_t key_len;
13         void *val;
14         uint32_t hash;
15         ec_htable_elt_free_t free;
16         unsigned int refcount;
17 };
18
19 struct ec_htable_elt_ref {
20         TAILQ_ENTRY(ec_htable_elt_ref) next;
21         TAILQ_ENTRY(ec_htable_elt_ref) hnext;
22         struct ec_htable_elt *elt;
23 };
24
25 TAILQ_HEAD(ec_htable_elt_ref_list, ec_htable_elt_ref);
26
27 struct ec_htable {
28         size_t len;
29         size_t table_size;
30         struct ec_htable_elt_ref_list list;
31         struct ec_htable_elt_ref_list *table;
32 };
33
34 #endif