Class: LibSL::LLS16

Inherits:
LLNumber show all
Defined in:
lib/types.rb

Instance Attribute Summary

Attributes inherited from LLNumber

#value

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from LLNumber

endianness, #initialize

Constructor Details

This class inherits a constructor from LibSL::LLNumber

Class Method Details

.decode(data) ⇒ Object



222
223
224
225
226
227
228
229
230
231
# File 'lib/types.rb', line 222

def self.decode(data)
	s16, data = LLNumber.decode(data, 's1a*', LLS16)
	if self.endianness == :big
		# Convert to little endian
		ms = s16.value >> 8
		ls = s16 - (ms << 8)
		s16.value = (ls << 8) + ms
	end
	return s16, data
end

Instance Method Details

#encodeObject

Raises:

  • (ArgumentError)


233
234
235
236
237
238
239
240
# File 'lib/types.rb', line 233

def encode()
	raise ArgumentError, "Value out of range: #{@value}" if @value < -0x8000 or @value > 0x7fff
	data = super('s')
	if LLNumber::endianness == :big
		data = data.unpack('C2').reverse.pack('C2')
	end
	return data
end