@@ -35,9 +35,9 @@ func HashUInt32(input uint32) uint32 {
35
35
return 0
36
36
}
37
37
38
- key := mixKey (input )
39
- hash := mixHash (seed , key )
40
- return finalize (hash , 4 )
38
+ key := MixKey (input )
39
+ hash := MixHash (seed , key )
40
+ return Finalize (hash , 4 )
41
41
}
42
42
43
43
func HashUInt64 (input uint64 ) uint32 {
@@ -48,13 +48,13 @@ func HashUInt64(input uint64) uint32 {
48
48
low := uint32 (input )
49
49
high := uint32 (input >> 32 )
50
50
51
- key := mixKey (low )
52
- hash := mixHash (seed , key )
51
+ key := MixKey (low )
52
+ hash := MixHash (seed , key )
53
53
54
- key = mixKey (high )
55
- hash = mixHash (hash , key )
54
+ key = MixKey (high )
55
+ hash = MixHash (hash , key )
56
56
57
- return finalize (hash , 8 )
57
+ return Finalize (hash , 8 )
58
58
}
59
59
60
60
func HashString (input string ) uint32 {
@@ -65,8 +65,8 @@ func HashString(input string) uint32 {
65
65
// step through the string 4 bytes at a time
66
66
for i := 3 ; i < len ; i += 4 {
67
67
key := uint32 (input [i - 3 ]) | uint32 (input [i - 2 ]<< 8 ) | uint32 (input [i - 1 ]<< 16 ) | uint32 (input [i ]<< 24 )
68
- key = mixKey (key )
69
- hash = mixHash (hash , key )
68
+ key = MixKey (key )
69
+ hash = MixHash (hash , key )
70
70
}
71
71
72
72
// deal with remaining characters
@@ -81,23 +81,21 @@ func HashString(input string) uint32 {
81
81
case 3 :
82
82
key = uint32 (input [len - 3 ]) | uint32 (input [len - 2 ]<< 8 ) | uint32 (input [len - 1 ]<< 16 )
83
83
}
84
- key = mixKey (key )
85
- hash = mixHash (hash , key )
84
+ key = MixKey (key )
85
+ hash = MixHash (hash , key )
86
86
}
87
87
88
- return finalize (hash , int32 (len ))
88
+ return Finalize (hash , int32 (len ))
89
89
}
90
90
91
- // implementation details
92
-
93
- func mixKey (key uint32 ) uint32 {
91
+ func MixKey (key uint32 ) uint32 {
94
92
key *= c1
95
93
key = rotateLeft (key , r1 )
96
94
key *= c2
97
95
return key
98
96
}
99
97
100
- func mixHash (hash uint32 , key uint32 ) uint32 {
98
+ func MixHash (hash uint32 , key uint32 ) uint32 {
101
99
hash ^= key
102
100
hash = rotateLeft (hash , r2 )
103
101
hash = hash * m + n
@@ -106,7 +104,7 @@ func mixHash(hash uint32, key uint32) uint32 {
106
104
}
107
105
108
106
// finalize forces all bits of a hash block to avalanche
109
- func finalize (hash uint32 , length int32 ) uint32 {
107
+ func Finalize (hash uint32 , length int32 ) uint32 {
110
108
hash ^= uint32 (length )
111
109
hash ^= hash >> 16
112
110
hash *= 0x85ebca6b
@@ -116,13 +114,15 @@ func finalize(hash uint32, length int32) uint32 {
116
114
return hash
117
115
}
118
116
119
- func finalizeCollHash (hash uint32 , count int32 ) uint32 {
117
+ func FinalizeCollHash (hash uint32 , count int32 ) uint32 {
120
118
h1 := seed
121
- k1 := mixKey (hash )
122
- h1 = mixHash (h1 , k1 )
123
- return finalize (h1 , count )
119
+ k1 := MixKey (hash )
120
+ h1 = MixHash (h1 , k1 )
121
+ return Finalize (h1 , count )
124
122
}
125
123
124
+ // implementation details
125
+
126
126
func rotateLeft (x uint32 , n uint32 ) uint32 {
127
127
return (x << n ) | (x >> (32 - n ))
128
128
}
0 commit comments