#ifndef ISL_HASH_H
#define ISL_HASH_H
#include <stdlib.h>
#include <isl/stdint.h>
#include <isl/ctx.h>
#if defined(__cplusplus)
extern "C" {
#endif
#define isl_hash_init() …
#define isl_hash_byte(h,b) …
#define isl_hash_hash(h,h2) …
#define isl_hash_bits(h,bits) …
uint32_t isl_hash_string(uint32_t hash, const char *s);
uint32_t isl_hash_mem(uint32_t hash, const void *p, size_t len);
#define isl_hash_builtin(h,l) …
struct isl_hash_table_entry
{ … };
struct isl_hash_table { … };
struct isl_hash_table *isl_hash_table_alloc(struct isl_ctx *ctx, int min_size);
void isl_hash_table_free(struct isl_ctx *ctx, struct isl_hash_table *table);
int isl_hash_table_init(struct isl_ctx *ctx, struct isl_hash_table *table,
int min_size);
void isl_hash_table_clear(struct isl_hash_table *table);
extern struct isl_hash_table_entry *isl_hash_table_entry_none;
struct isl_hash_table_entry *isl_hash_table_find(struct isl_ctx *ctx,
struct isl_hash_table *table,
uint32_t key_hash,
isl_bool (*eq)(const void *entry, const void *val),
const void *val, int reserve);
isl_stat isl_hash_table_foreach(isl_ctx *ctx, struct isl_hash_table *table,
isl_stat (*fn)(void **entry, void *user), void *user);
isl_bool isl_hash_table_every(isl_ctx *ctx, struct isl_hash_table *table,
isl_bool (*test)(void **entry, void *user), void *user);
void isl_hash_table_remove(struct isl_ctx *ctx,
struct isl_hash_table *table,
struct isl_hash_table_entry *entry);
#if defined(__cplusplus)
}
#endif
#endif