File: hash.h

package info (click to toggle)
cvs-fast-export 1.55-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 5,628 kB
  • sloc: ansic: 5,743; python: 1,390; sh: 511; lex: 352; yacc: 271; makefile: 256; perl: 63
file content (28 lines) | stat: -rw-r--r-- 657 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#ifndef _HASH_H_
#define _HASH_H_

#include "cvstypes.h"

hash_t
hash_init(void);

hash_t
hash_string(const char *val);

hash_t
hash_value(const char *val, size_t len);

hash_t
hash_mix(hash_t seed, const char *val, size_t len);

hash_t
hash_mix_string(hash_t seed, const char *val);


#define HASH_INIT(hash) hash_t hash = hash_init()
#define HASH_MIX_SEED(hash, seed, val) hash = hash_mix((seed), (const char *)&(val), sizeof(val))
#define HASH_VALUE(val) hash_value((const char *)&(val), sizeof(val))
#define HASH_MIX(hash, val) hash = hash_mix((hash), (const char *)&(val), sizeof(val))
#define HASH_COMBINE(h1, h2) ((h1) ^ (h2))

#endif /* _HASH_H_ */