github.com/holoplot/go-evdev@v0.0.0-20220721205823-d31c64b9d636/bitmap.go (about)

     1  package evdev
     2  
     3  type bitmap struct {
     4  	bits []byte
     5  }
     6  
     7  func (bm *bitmap) bitIsSet(bit int) bool {
     8  	if bit > len(bm.bits)*8 {
     9  		return false
    10  	}
    11  
    12  	return bm.bits[bit/8]&(1<<(bit%8)) != 0
    13  }
    14  
    15  func (bm *bitmap) setBits() []int {
    16  	var a []int
    17  
    18  	for i, by := range bm.bits {
    19  		for bit := 0; bit < 8; bit++ {
    20  			if by&byte(1<<bit) != 0 {
    21  				a = append(a, (i*8)+bit)
    22  			}
    23  		}
    24  	}
    25  
    26  	return a
    27  }
    28  
    29  func newBitmap(bits []byte) *bitmap {
    30  	return &bitmap{
    31  		bits: bits,
    32  	}
    33  }