Sha256: 17ec52480f6ea01286375962047a2fee4bdb6fcf508396f0ad5c9661638f558e
Contents?: true
Size: 667 Bytes
Versions: 28
Compression:
Stored size: 667 Bytes
Contents
module Plutonium module Lib class BitFlags delegate :sum, to: :indices def initialize(*flags) @map = flags.each_with_index.map { |flag, index| [flag, 2.pow(index)] }.to_h end def set?(value, *flags) check = bits(*flags) value & check == check end def extract(value) @map.select { |_flag, bit| value & bit == bit }.keys end def [](*flags) bits(*flags) end def bits(*flags) @map.slice(*flags).values.sum end def flags @flags ||= @map.keys end def indices @indices ||= @map.values end end end end
Version data entries
28 entries across 28 versions & 1 rubygems