Class: BitAttrs::Bitset
- Inherits:
-
Object
- Object
- BitAttrs::Bitset
- Defined in:
- lib/bit_attrs/bitset.rb
Instance Method Summary collapse
- #[](flag) ⇒ Object
- #[]=(flag, value) ⇒ Object
- #each(&block) ⇒ Object
-
#initialize(flags_map, mask = 0) ⇒ Bitset
constructor
A new instance of Bitset.
- #inspect ⇒ Object
- #to_h ⇒ Object
- #to_i ⇒ Object
Constructor Details
#initialize(flags_map, mask = 0) ⇒ Bitset
Returns a new instance of Bitset.
4 5 6 7 |
# File 'lib/bit_attrs/bitset.rb', line 4 def initialize(flags_map, mask = 0) @flags_map = flags_map @mask = mask.to_i end |
Instance Method Details
#[](flag) ⇒ Object
15 16 17 18 19 20 |
# File 'lib/bit_attrs/bitset.rb', line 15 def [](flag) i = @flags_map[flag.to_sym] bit = (@mask >> i) & 1 bit == 1 end |
#[]=(flag, value) ⇒ Object
22 23 24 25 26 27 28 29 30 |
# File 'lib/bit_attrs/bitset.rb', line 22 def []=(flag, value) i = @flags_map[flag.to_sym] if truthy?(value) @mask |= 1 << i else @mask &= ~(1 << i) end end |
#each(&block) ⇒ Object
32 33 34 |
# File 'lib/bit_attrs/bitset.rb', line 32 def each(&block) self.to_h.each &block end |
#inspect ⇒ Object
36 37 38 |
# File 'lib/bit_attrs/bitset.rb', line 36 def inspect to_h.inspect end |
#to_h ⇒ Object
9 10 11 12 13 |
# File 'lib/bit_attrs/bitset.rb', line 9 def to_h @flags_map.inject({}) do |memo, (flag, _i)| memo.merge! flag => self[flag] end end |
#to_i ⇒ Object
40 41 42 |
# File 'lib/bit_attrs/bitset.rb', line 40 def to_i @mask end |