17#ifndef LIBCLOD_TABLE_H
18#define LIBCLOD_TABLE_H
41 uint64_t (*
hash_func)(uint64_t seed,
const void *key,
size_t key_size,
void *
user);
46 int (*
cmp_func)(
const void *key1,
size_t key1_size,
const void *key2,
size_t key2_size,
void *
user);
48 void *(*malloc_func)(size_t,
void *
user);
60CLOD_API CLOD_USE_RETURN
68CLOD_API CLOD_NONNULL(1)
77CLOD_API CLOD_PURE CLOD_NONNULL(1)
93CLOD_API CLOD_NONNULL(1, 2)
109CLOD_API CLOD_NONNULL(1, 2, 4)
120CLOD_API CLOD_PURE CLOD_NONNULL(1, 2)
132CLOD_API CLOD_USE_RETURN CLOD_NONNULL(1, 2)
141#define CLOD_TABLE_ITER_INIT (struct clod_table_iter){ ._internal = 0 }
155CLOD_API CLOD_NONNULL(1, 2)
173clod_table_cmp_ptr(const
void *key1,
size_t key1_size, const
void *key2,
size_t key2_size,
void *user);
int clod_table_cmp_ptr(const void *key1, size_t key1_size, const void *key2, size_t key2_size, void *user)
size_t clod_table_len(const struct clod_table *t)
void clod_table_destroy(struct clod_table *t)
bool clod_table_set(struct clod_table *t, const void *element, size_t key_size, void **existing_out)
uint64_t clod_table_hash_ptr(uint64_t seed, const void *key, size_t key_size, void *user)
struct clod_table * clod_table_create(const struct clod_table_opts *opts)
bool clod_table_add(struct clod_table *t, const void *element, size_t key_size, void **existing_out)
void * clod_table_get(const struct clod_table *t, const void *key, size_t key_size)
void * clod_table_del(struct clod_table *t, const void *key, size_t key_size)
int(* cmp_func)(const void *key1, size_t key1_size, const void *key2, size_t key2_size, void *user)
uint64_t(* hash_func)(uint64_t seed, const void *key, size_t key_size, void *user)
void(* free_func)(void *, void *user)