Source File
ints.go
Belonging Package
google.golang.org/protobuf/internal/set
// Copyright 2018 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Package set provides simple set data structures for uint64s.
package set
import
// int64s represents a set of integers within the range of 0..63.
type int64s uint64
func ( *int64s) () int {
return bits.OnesCount64(uint64(*))
}
func ( *int64s) ( uint64) bool {
return uint64(*)&(uint64(1)<<) > 0
}
func ( *int64s) ( uint64) {
*(*uint64)() |= uint64(1) <<
}
func ( *int64s) ( uint64) {
*(*uint64)() &^= uint64(1) <<
}
// Ints represents a set of integers within the range of 0..math.MaxUint64.
type Ints struct {
lo int64s
hi map[uint64]struct{}
}
func ( *Ints) () int {
return .lo.Len() + len(.hi)
}
func ( *Ints) ( uint64) bool {
if < 64 {
return .lo.Has()
}
, := .hi[]
return
}
func ( *Ints) ( uint64) {
if < 64 {
.lo.Set()
return
}
if .hi == nil {
.hi = make(map[uint64]struct{})
}
.hi[] = struct{}{}
}
func ( *Ints) ( uint64) {
if < 64 {
.lo.Clear()
return
}
delete(.hi, )
}
The pages are generated with Golds v0.4.9. (GOOS=linux GOARCH=amd64)