30 lines
775 B
C
30 lines
775 B
C
|
#include "pairmap.h"
|
||
|
#include <stdlib.h>
|
||
|
|
||
|
unsigned long pairmap_hash_func(void* key){
|
||
|
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(void* a, void* b){
|
||
|
pairmap_key* new_key_a = a;
|
||
|
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(void* key){
|
||
|
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;
|
||
|
}
|