Class: Bitfield
- Inherits:
-
Object
- Object
- Bitfield
- Defined in:
- lib/bitfield.rb
Defined Under Namespace
Classes: LengthError
Constant Summary collapse
- VERSION =
"0.1.0"
Class Method Summary collapse
Instance Method Summary collapse
- #get(idx) ⇒ Object
-
#initialize(length_in_bits, content = nil) ⇒ Bitfield
constructor
A new instance of Bitfield.
- #serialize(path, verbose = false) ⇒ Object
- #set(idx) ⇒ Object
- #unset(idx) ⇒ Object
Constructor Details
#initialize(length_in_bits, content = nil) ⇒ Bitfield
Returns a new instance of Bitfield.
14 15 16 17 18 |
# File 'lib/bitfield.rb', line 14 def initialize(length_in_bits, content=nil) length_in_bytes = length_in_bits / 8 @bits = content || (0.chr * length_in_bytes) raise LengthError.new(length_in_bytes, bits.length) if length_in_bytes && length_in_bytes != bits.length end |
Class Method Details
.deserialize(path, size) ⇒ Object
43 44 45 |
# File 'lib/bitfield.rb', line 43 def self.deserialize(path, size) new(size, File.binread(path)) end |
Instance Method Details
#get(idx) ⇒ Object
33 34 35 36 37 |
# File 'lib/bitfield.rb', line 33 def get(idx) find(idx) do |chr, mask| (bits[chr].ord & mask) == mask end end |
#serialize(path, verbose = false) ⇒ Object
39 40 41 |
# File 'lib/bitfield.rb', line 39 def serialize(path, verbose=false) File.write(path, bits) end |
#set(idx) ⇒ Object
20 21 22 23 24 |
# File 'lib/bitfield.rb', line 20 def set(idx) find(idx) do |chr, mask| bits[chr] = (bits[chr].ord | mask).chr end end |
#unset(idx) ⇒ Object
26 27 28 29 30 31 |
# File 'lib/bitfield.rb', line 26 def unset(idx) find(idx) do |chr, mask| unmask = 255 ^ mask bits[chr] = (bits[chr].ord & unmask).chr end end |