Sha256: 6b82b31a7c28914aeb923a118222b6784810e614bf4d09223a2ac62d0598eea5
Contents?: true
Size: 985 Bytes
Versions: 1
Compression:
Stored size: 985 Bytes
Contents
# frozen_string_literal: true module TTFunk # Bitfield represents a series of bits that can individually be toggled. class BitField # Serialized value. # @return [Integer] attr_reader :value # @param value [Integer] initial value def initialize(value = 0) @value = value end # Set bit on. # # @param pos [Integer] bit position # @return [void] def on(pos) @value |= 2**pos end # If bit on? # # @param pos [Integer] # @return [Boolean] def on?(pos) (value & (2**pos)).positive? end # Set bit off. # # @param pos [Integer] # @return [void] def off(pos) @value &= (2**Math.log2(value).ceil) - (2**pos) - 1 end # Is bit off? # # @param pos [Integer] # @return [Boolean] def off?(pos) !on?(pos) end # Get a duplicate of this bit field. # # @return [BitField] def dup self.class.new(value) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ttfunk-1.8.0 | lib/ttfunk/bit_field.rb |