mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-17 16:59:34 -06:00
41 lines
624 B
C
41 lines
624 B
C
#ifndef GU_HASH_H_
|
|
#define GU_HASH_H_
|
|
|
|
#include <gu/fun.h>
|
|
|
|
typedef GuWord GuHash;
|
|
|
|
static inline GuHash
|
|
gu_hash_ptr(void* ptr)
|
|
{
|
|
return (GuHash) ptr;
|
|
}
|
|
|
|
|
|
static inline GuHash
|
|
gu_hash_byte(GuHash h, uint8_t u)
|
|
{
|
|
// Paul Larson's simple byte hash
|
|
return h * 101 + u;
|
|
}
|
|
|
|
|
|
GuHash
|
|
gu_hash_bytes(GuHash h, const uint8_t* buf, size_t len);
|
|
|
|
typedef const struct GuHasher GuHasher;
|
|
|
|
struct GuHasher {
|
|
GuEquality eq;
|
|
GuHash (*hash)(GuHasher* self, const void* p);
|
|
};
|
|
|
|
|
|
GU_API_DATA_DECL GuHasher gu_int_hasher[1];
|
|
|
|
GU_API_DATA_DECL GuHasher gu_addr_hasher[1];
|
|
|
|
GU_API_DATA_DECL GuHasher gu_word_hasher[1];
|
|
|
|
#endif // GU_HASH_H_
|