aboutsummaryrefslogtreecommitdiff
path: root/format/commitgraph/bloom/contain.go
blob: 4789b3213f1265cebe284e24febc927ee12c1431 (about) (plain) (blame)
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
package bloom

// MightContain reports whether the Bloom filter may contain the given path.
//
// Evaluated against the full path and each of its directory prefixes. A true
// result indicates a possible match; false means the path definitely did not
// change.
func (f *Filter) MightContain(path []byte, settings *Settings) (bool, error) {
	if f == nil || settings == nil {
		return false, nil
	}

	if len(f.Data) == 0 {
		return false, nil
	}

	keys, err := keyvec(path, settings)
	if err != nil {
		return false, err
	}

	for i := range keys {
		if filterContainsKey(f, &keys[i], settings) {
			return true, nil
		}
	}

	return false, nil
}