Class: Borsh::Integer

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

Instance Method Summary collapse

Constructor Details

#initialize(value, type) ⇒ Integer

Returns a new instance of Integer.



2
3
4
5
# File 'lib/borsh/integer.rb', line 2

def initialize(value, type)
  @value = value
  @type = type
end

Instance Method Details

#to_borshObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/borsh/integer.rb', line 7

def to_borsh
  pack_arg = case type
             when :u8
               'C'
             when :u16
               'S<'
             when :u32
               'L<'
             when :u64
              'Q<'
             when :u128
               lower = value & 0xFFFFFFFFFFFFFFFF
               higher = (value >> 64) & 0xFFFFFFFFFFFFFFFF
               return [lower, higher].pack('Q<*')
             else
               raise Borsh::ArgumentError, "unknown type #{type}"
             end

  result = [value].pack(pack_arg)
  raise Borsh::ArgumentError, 'Integer serialization failure' if result.unpack(pack_arg) != [value]

  result
end