Sha256: ecd6b90cc2439796fe71cdcd7c48523761ffd1e2bd2db4b1150156edc381fd7d

Contents?: true

Size: 776 Bytes

Versions: 20

Compression:

Stored size: 776 Bytes

Contents

module Etherlite::Types
  class ArrayDynamic < Base
    attr_reader :subtype

    def initialize(_subtype)
      raise ArgumentError, 'An array can not contain a dynamic type' if _subtype.dynamic?

      @subtype = _subtype
    end

    def signature
      "#{@subtype.signature}[]"
    end

    def encode(_values)
      raise ArgumentError, "expected an array for #{signature}" unless _values.is_a? Array

      encoded_array = Etherlite::Support::Array.encode([@subtype] * _values.length, _values)
      Etherlite::Utils.uint_to_hex(_values.length) + encoded_array
    end

    def decode(_connection, _data)
      length = Etherlite::Utils.hex_to_uint(_data[0..63])
      Etherlite::Support::Array.decode(_connection, [@subtype] * length, _data[64..-1])
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
etherlite-0.6.0 lib/etherlite/types/array_dynamic.rb
etherlite-0.5.3 lib/etherlite/types/array_dynamic.rb
etherlite-0.5.2 lib/etherlite/types/array_dynamic.rb
etherlite-0.5.1 lib/etherlite/types/array_dynamic.rb
etherlite-0.5.0 lib/etherlite/types/array_dynamic.rb
etherlite-0.4.2 lib/etherlite/types/array_dynamic.rb
etherlite-0.4.1 lib/etherlite/types/array_dynamic.rb
etherlite-0.4.0 lib/etherlite/types/array_dynamic.rb
etherlite-0.3.0 lib/etherlite/types/array_dynamic.rb
etherlite-0.2.6 lib/etherlite/types/array_dynamic.rb
etherlite-0.2.5 lib/etherlite/types/array_dynamic.rb
etherlite-0.2.4 lib/etherlite/types/array_dynamic.rb
etherlite-0.2.3 lib/etherlite/types/array_dynamic.rb
etherlite-0.2.2 lib/etherlite/types/array_dynamic.rb
etherlite-0.2.1 lib/etherlite/types/array_dynamic.rb
etherlite-0.2.0 lib/etherlite/types/array_dynamic.rb
etherlite-0.1.8 lib/etherlite/types/array_dynamic.rb
etherlite-0.1.7 lib/etherlite/types/array_dynamic.rb
etherlite-0.1.6 lib/etherlite/types/array_dynamic.rb
etherlite-0.1.5 lib/etherlite/types/array_dynamic.rb