#pragma once

#include <stddef.h>

/*
 * TODO: Make thread safe
 * TODO: Resizing
 * TODO: Custom hashing and eq
 */

typedef struct hashmap hashmap_t;

/** Initialize the hashmap */
hashmap_t *hashmap_create(size_t bucket_count);

/** Deallocate the map */
void hashmap_destroy(hashmap_t *map);

/** Put a new entry into the map */
void hashmap_put(hashmap_t *map, const char *key, void *value);

/** Get an entry from the map */
void *hashmap_get(hashmap_t *map, const char *key);

/** Remove entry from the map */
void hashmap_remove(hashmap_t *map, const char *key);