A monkey patch to force byte-aligned primitives to become bit-aligned. This allows them to be used at non byte based boundaries.
class BitString < BinData::String bit_aligned end class MyRecord < BinData::Record bit4 :preamble bit_string :str, length: 2 end
# File lib/bindata/alignment.rb, line 55 def bit_aligned? true end
# File lib/bindata/alignment.rb, line 63 def do_num_bytes super.to_f end
# File lib/bindata/alignment.rb, line 67 def do_write(io) value_to_binary_string(_value).each_byte { |v| io.writebits(v, 8, :big) } end
# File lib/bindata/alignment.rb, line 59 def read_and_return_value(io) super(BitAlignedIO.new(io)) end