File tree 5 files changed +19
-7
lines changed
5 files changed +19
-7
lines changed Original file line number Diff line number Diff line change @@ -318,7 +318,7 @@ struct Colorize::Object(T)
318
318
unless mode_is_default
319
319
# Can't reuse MODES constant because it has bold/bright duplicated
320
320
{% for name in %w(bold dim underline blink reverse hidden) % }
321
- if ( @mode & MODE_ {{name.upcase.id}}_FLAG) != 0
321
+ if @mode .bits_set? MODE_ {{name.upcase.id}}_FLAG
322
322
io << " ;" if printed
323
323
io << MODE_ {{name.upcase.id}}
324
324
printed = true
Original file line number Diff line number Diff line change @@ -27,7 +27,8 @@ module Crystal::System::FileDescriptor
27
27
end
28
28
29
29
private def system_blocking?
30
- fcntl(LibC ::F_GETFL ) & LibC ::O_NONBLOCK == 0
30
+ flags = fcntl(LibC ::F_GETFL )
31
+ ! flags.bits_set? LibC ::O_NONBLOCK
31
32
end
32
33
33
34
private def system_blocking= (value )
@@ -43,7 +44,7 @@ module Crystal::System::FileDescriptor
43
44
44
45
private def system_close_on_exec?
45
46
flags = fcntl(LibC ::F_GETFD )
46
- ( flags & LibC :: FD_CLOEXEC ) == LibC ::FD_CLOEXEC
47
+ flags.bits_set? LibC ::FD_CLOEXEC
47
48
end
48
49
49
50
private def system_close_on_exec= (arg : Bool )
Original file line number Diff line number Diff line change @@ -117,7 +117,7 @@ module Debug
117
117
end
118
118
119
119
def abi64 ?
120
- cputype.value & ABI64 == ABI64
120
+ cputype.value.bits_set? ABI64
121
121
end
122
122
123
123
def endianness
@@ -292,11 +292,11 @@ module Debug
292
292
end
293
293
294
294
def pext ?
295
- ( value & PEXT ) == PEXT
295
+ value.bits_set? PEXT
296
296
end
297
297
298
298
def ext ?
299
- ( value & EXT ) == EXT
299
+ value.bits_set? EXT
300
300
end
301
301
302
302
{% for flag in %w(UNDF ABS SECT PBUD INDR) % }
Original file line number Diff line number Diff line change @@ -100,7 +100,7 @@ struct Enum
100
100
found = false
101
101
{% for member in @type .constants % }
102
102
{% if member.stringify != " All" % }
103
- if {{@type }}::{{member}}.value != 0 && ( value & {{ @type }}::{{member}}.value) == {{@type }}::{{member}}.value
103
+ if {{@type }}::{{member}}.value != 0 && value.bits_set? {{@type }}::{{member}}.value
104
104
io << " | " if found
105
105
io << {{member.stringify}}
106
106
found = true
Original file line number Diff line number Diff line change @@ -296,6 +296,17 @@ struct Int
296
296
self >> bit & 1
297
297
end
298
298
299
+ # Returns `true` if all bits in *mask* are set on `self`.
300
+ #
301
+ # ```
302
+ # 0b0110.bits_set?(0b0110) # => true
303
+ # 0b1101.bits_set?(0b0111) # => false
304
+ # 0b1101.bits_set?(0b1100) # => true
305
+ # ```
306
+ def bits_set ?(mask)
307
+ (self & mask) == mask
308
+ end
309
+
299
310
def gcd (other : Int )
300
311
self == 0 ? other.abs : (other % self ).gcd(self )
301
312
end
You can’t perform that action at this time.
0 commit comments