Class: BitStream::Signed

Inherits:
Object
  • Object
show all
Defined in:
lib/types/integer.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(unsigned) ⇒ Signed

Returns a new instance of Signed.



107
108
109
# File 'lib/types/integer.rb', line 107

def initialize(unsigned)
  @unsigned = unsigned
end

Class Method Details

.instance(props, bit_width) ⇒ Object



102
103
104
105
# File 'lib/types/integer.rb', line 102

def self.instance(props, bit_width)
  unsigned = Unsigned.instance(props, bit_width)
  return @instances[unsigned]
end

Instance Method Details

#lengthObject



111
112
113
# File 'lib/types/integer.rb', line 111

def length
  @unsigned.length
end

#read(s, offset) ⇒ Object



115
116
117
118
119
120
121
122
123
124
# File 'lib/types/integer.rb', line 115

def read(s, offset)
  info = @unsigned.read(s, offset)
  val = info[:value]
  len = info[:length]
  mask = -1 << (len - 1)
  if (val & mask) != 0
    val |= mask
  end
  return FieldInfo.new(val, len)
end

#write(s, offset, value) ⇒ Object



126
127
128
129
130
# File 'lib/types/integer.rb', line 126

def write(s, offset, value)
  mask = ~(-1 << len)
  value &= mask
  return @unsigned.write(s, offset, value)
end