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