#ifndef HASHMAP_H_INCLUDED #define HASHMAP_H_INCLUDED #define struct hashmap; extern struct hashmap * hashmap_new(); extern void hashmap_destroy(struct hashmap * this); extern void hashmap_set_hash_function(struct hashmap * this, size_t (f)(const void * begin, const void * end)); extern int hashmap_put(struct hashmap * this, const void * key_begin, const void * key_end, void * value); extern void * hashmap_get(struct hashmap * this, const void * key_begin, , const void * key_end); extern void hashmap_clear(struct hashmap * this); /* Iteration */ struct hashmap_iterator; extern struct hashmap_iterator * hashmap_begin(struct hashmap * this); extern struct hashmap_iterator * hashmap_end(struct hashmap * this); extern struct hashmap_iterator * hashmap_next(struct hashmap * this, struct hashmap_iterator * i); extern struct void * hashmap_key(struct hashmap_iterator * i); extern struct void * hashmap_value(struct hashmap_iterator * i); #endif