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 29 30 31 32 33 34 35 36 37 38
|
package cuckoofilter
const fingerprintSize = 1
const bucketSize = 4
type fingerprint [fingerprintSize]byte
type bucket [bucketSize]fingerprint
var nullFp = fingerprint{0}
func (b *bucket) insert(fp fingerprint) bool {
for i, tfp := range b {
if tfp == nullFp {
b[i] = fp
return true
}
}
return false
}
func (b *bucket) delete(fp fingerprint) bool {
for i, tfp := range b {
if tfp == fp {
b[i] = nullFp
return true
}
}
return false
}
func (b *bucket) getFingerprintIndex(fp fingerprint) int {
for i, tfp := range b {
if tfp == fp {
return i
}
}
return -1
}
|