X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fshared%2Fhashmap.c;h=dcfbb67228e826b21260d4d995ca6ed3a5494bfb;hp=ef78070f4c0854cd767e7a2803317fccb51b7691;hb=a4bcff5ba36115495994e9f9ba66074471de76ab;hpb=7fb4d896e1ff018d91498f0e83b02e2534644907 diff --git a/src/shared/hashmap.c b/src/shared/hashmap.c index ef78070f4..dcfbb6722 100644 --- a/src/shared/hashmap.c +++ b/src/shared/hashmap.c @@ -147,6 +147,25 @@ int trivial_compare_func(const void *a, const void *b) { return a < b ? -1 : (a > b ? 1 : 0); } +unsigned uint64_hash_func(const void *p) { + uint64_t u; + + assert_cc(sizeof(uint64_t) == 2*sizeof(unsigned)); + + u = *(const uint64_t*) p; + + return (unsigned) ((u >> 32) ^ u); +} + +int uint64_compare_func(const void *_a, const void *_b) { + uint64_t a, b; + + a = *(const uint64_t*) _a; + b = *(const uint64_t*) _b; + + return a < b ? -1 : (a > b ? 1 : 0); +} + Hashmap *hashmap_new(hash_func_t hash_func, compare_func_t compare_func) { bool b; Hashmap *h;