class Etherlite::Types::Integer
Public Class Methods
new(_signed, _size)
click to toggle source
# File lib/etherlite/types/integer.rb, line 3 def initialize(_signed, _size) unless 0 < _size && _size <= 256 && _size % 8 == 0 raise ArgumentError, "invalid integer size #{_size}" end @signed = _signed @size = _size end
Public Instance Methods
decode(_connection, _value)
click to toggle source
# File lib/etherlite/types/integer.rb, line 28 def decode(_connection, _value) @signed ? Etherlite::Utils.hex_to_int(_value) : Etherlite::Utils.hex_to_uint(_value) end
encode(_value)
click to toggle source
# File lib/etherlite/types/integer.rb, line 20 def encode(_value) raise ArgumentError, "expected a number for #{signature}" unless _value.is_a? ::Integer raise ArgumentError, "expected a positive number for #{signature}" if !@signed && _value < 0 raise ArgumentError, "value out of bounds #{_value}" if _value.abs > maximum @signed ? Etherlite::Utils.int_to_hex(_value) : Etherlite::Utils.uint_to_hex(_value) end
signature()
click to toggle source
# File lib/etherlite/types/integer.rb, line 12 def signature "#{@signed ? 'int' : 'uint'}#{@size}" end
size()
click to toggle source
# File lib/etherlite/types/integer.rb, line 16 def size 32 end
Private Instance Methods
maximum()
click to toggle source
# File lib/etherlite/types/integer.rb, line 34 def maximum 2**(@signed ? @size - 1 : @size) end