|
1 | 1 | // Package bit implements variable-size bit-fields |
2 | 2 | package bit |
3 | 3 |
|
4 | | -// Field is a variable bit-field |
| 4 | +// Field is a variable-length bit-field |
5 | 5 | type Field []byte |
6 | 6 |
|
7 | 7 | // IsSet checks if bit n is set |
8 | 8 | func (bf *Field) IsSet(n int) bool { |
9 | | - bit, off := n>>3, 1<<uint(n&7) |
| 9 | + bit, off := n>>3, byte(1<<uint(n&7)) |
10 | 10 | if len(*bf) <= bit { |
11 | 11 | return false |
12 | 12 | } |
13 | | - return (*bf)[bit]&byte(off) != 0 |
| 13 | + return (*bf)[bit]&off != 0 |
14 | 14 | } |
15 | 15 |
|
16 | 16 | // Set bit n |
17 | 17 | func (bf *Field) Set(n int) *Field { |
18 | | - bit, off := n>>3, 1<<uint(n&7) |
| 18 | + bit, off := n>>3, byte(1<<uint(n&7)) |
19 | 19 | if len(*bf) <= bit { |
20 | 20 | *bf = append(*bf, make([]byte, bit-len(*bf)+1)...) |
21 | 21 | } |
22 | | - (*bf)[bit] |= byte(off) |
| 22 | + (*bf)[bit] |= off |
23 | 23 | return bf |
24 | 24 | } |
25 | 25 |
|
26 | | -// IsClr checks if bit n is set |
27 | | -func (bf *Field) IsClr(n int) bool { |
28 | | - bit, off := n>>3, 1<<uint(n&7) |
| 26 | +// IsClear checks if bit n is cleared |
| 27 | +func (bf *Field) IsClear(n int) bool { |
| 28 | + bit, off := n>>3, byte(1<<uint(n&7)) |
29 | 29 | if len(*bf) <= bit { |
30 | 30 | return true |
31 | 31 | } |
32 | | - return (*bf)[bit]&byte(off) == 0 |
| 32 | + return (*bf)[bit]&off == 0 |
33 | 33 | } |
34 | 34 |
|
35 | | -// Clr bit n |
36 | | -func (bf *Field) Clr(n int) *Field { |
37 | | - bit, off := n>>3, 1<<uint(n&7) |
| 35 | +// Clear bit n |
| 36 | +func (bf *Field) Clear(n int) *Field { |
| 37 | + bit, off := n>>3, byte(1<<uint(n&7)) |
38 | 38 | if len(*bf) <= bit { |
39 | 39 | return bf |
40 | 40 | } |
41 | | - (*bf)[bit] &^= byte(off) |
| 41 | + (*bf)[bit] &^= off |
42 | 42 | return bf |
43 | 43 | } |
0 commit comments