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 }