#include "pairmap.h" #include unsigned long pairmap_hash_func(const void* key){ const pairmap_key* new_key = key; unsigned int hash = 0; hash |= ((new_key->x & 0xffff) << 8) + (new_key->y & 0xffff); return hash; } int pairmap_cmp_func(const void* a, const void* b){ const pairmap_key* new_key_a = a; const pairmap_key* new_key_b = b; return (new_key_a->x == new_key_b->x) && (new_key_a->y == new_key_b->y); } void* pairmap_copy_func(const void* key){ const pairmap_key* copy_from = key; pairmap_key* new_key = malloc(sizeof(*new_key)); if(new_key){ new_key->x = copy_from->x; new_key->y = copy_from->y; } return new_key; } void pairmap_init_ht(ht* ht){ ht_init(ht); ht->hash_func = pairmap_hash_func; ht->cmp_func = pairmap_cmp_func; ht->copy_func = pairmap_copy_func; }