-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbits.go
61 lines (46 loc) · 937 Bytes
/
bits.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package gotils
type Bits uint64
func Set(b, flag Bits) Bits {
return (b | flag)
}
func Clear(b, flag Bits) Bits {
b.Clear(flag)
return b
}
func Toggle(b, flag Bits) Bits {
b.Toggle(flag)
return b
}
func CheckAny(b, flags Bits) bool {
return b.CheckAny(flags)
}
func IsSetAny(b, flags Bits) bool {
return b.IsSetAny(flags)
}
func IsSetAll(b, flags Bits) bool {
return b.IsSetAll(flags)
}
func CheckAll(b, flags Bits) bool {
return (b & flags) == flags
}
func (t *Bits) Set(flag Bits) {
*t = ((*t) | flag)
}
func (t *Bits) Clear(flag Bits) {
*t = ((*t) &^ flag)
}
func (t *Bits) Toggle(flag Bits) {
*t = ((*t) ^ flag)
}
func (t *Bits) CheckAny(flags Bits) bool {
return ((*t) & flags) != 0
}
func (t *Bits) CheckAll(flags Bits) bool {
return ((*t) & flags) == flags
}
func (t *Bits) IsSetAny(flags Bits) bool {
return t.CheckAny(flags)
}
func (t *Bits) IsSetAll(flags Bits) bool {
return t.CheckAll(flags)
}