class BitStream::ArrayProxy
Attributes
size[R]
Public Class Methods
new(instance)
click to toggle source
# File lib/bitstream.rb, line 36 def initialize(instance) @fields = [] @values = [] @updated = [] @instance = instance @size = 0 end
Public Instance Methods
add_field(field)
click to toggle source
# File lib/bitstream.rb, line 44 def add_field(field) @fields << field @size += 1 end
get_field(pos)
click to toggle source
# File lib/bitstream.rb, line 49 def get_field(pos) @fields[pos] end
read_access(pos)
click to toggle source
# File lib/bitstream.rb, line 53 def read_access(pos) unless @updated[pos] field = @fields[pos] @values[pos] = field.value @fields[pos] = nil @updated[pos] = true end return @values[pos] end
shrink(n)
click to toggle source
# File lib/bitstream.rb, line 69 def shrink(n) @fields.pop(n) @size -= n dif = @values.size - @size if dif > 0 @values.pop(dif) @updated.pop(dif) end end
write_access(pos, val)
click to toggle source
# File lib/bitstream.rb, line 63 def write_access(pos, val) @fields[pos] = nil @values[pos] = val @updated[pos] = true end