github.com/unicornultrafoundation/go-u2u@v1.0.0-rc1.0.20240205080301-e74a83d3fadc/utils/bitmap/bitset.go (about)

     1  package bitmap
     2  
     3  type Set []byte
     4  
     5  func New(max int) Set {
     6  	l := max / 8
     7  	if max%8 != 0 {
     8  		l++
     9  	}
    10  	return make(Set, l)
    11  }
    12  
    13  func (s Set) Put(i int) {
    14  	yi := i / 8
    15  	bi := i % 8
    16  	s[yi] |= 1 << bi
    17  }
    18  
    19  func (s Set) Del(i int) {
    20  	yi := i / 8
    21  	bi := i % 8
    22  	s[yi] &= ^(1 << bi)
    23  }
    24  
    25  func (s Set) Has(i int) bool {
    26  	yi := i / 8
    27  	bi := i % 8
    28  	return (s[yi] & (1 << bi)) != 0
    29  }