shithub: furgit

ref: c8dd7d3b44c93a664dddc0c4619d336c6e13d2a8
dir: /commitgraph/bloom/filter.go/

View raw version
package bloom

// Filter represents a changed-paths Bloom filter associated with a commit.
//
// The filter encodes which paths changed between a commit and its first
// parent. Paths are expected to be in Git's slash-separated form and
// are queried using a path and its prefixes (e.g. "a/b/c", "a/b", "a").
type Filter struct {
	Data []byte

	HashVersion    uint32
	NumHashes      uint32
	BitsPerEntry   uint32
	MaxChangePaths uint32
}

// NewFilter constructs one query-ready bloom filter from raw data/settings.
func NewFilter(data []byte, settings Settings) Filter {
	return Filter{
		Data:           data,
		HashVersion:    settings.HashVersion,
		NumHashes:      settings.NumHashes,
		BitsPerEntry:   settings.BitsPerEntry,
		MaxChangePaths: settings.MaxChangePaths,
	}
}