abi v0.1.6 ABI.FunctionSelector

Module to help parse the ABI function signatures, e.g. my_function(uint64, string[]).

Link to this section Summary

Functions

Decodes a function selector to struct. This is a simple version and we may opt to do format parsing later

Decodes the given type-string as a simple array of types

Encodes a function call signature

Link to this section Types

Link to this type t()
t() :: %ABI.FunctionSelector{function: String.t(), returns: type(), types: [type()]}
Link to this type type()
type() :: {:uint, integer()} | :bool

Link to this section Functions

Link to this function decode(signature)

Decodes a function selector to struct. This is a simple version and we may opt to do format parsing later.

Examples

iex> ABI.FunctionSelector.decode("bark(uint256,bool)")
%ABI.FunctionSelector{
  function: "bark",
  types: [
    {:uint, 256},
    :bool
  ]
}

iex> ABI.FunctionSelector.decode("growl(uint,address,string[])")
%ABI.FunctionSelector{
  function: "growl",
  types: [
    {:uint, 256},
    :address,
    {:array, :string}
  ]
}

iex> ABI.FunctionSelector.decode("rollover()")
%ABI.FunctionSelector{
  function: "rollover",
  types: []
}

iex> ABI.FunctionSelector.decode("pet(address[])")
%ABI.FunctionSelector{
  function: "pet",
  types: [
    {:array, :address}
  ]
}

iex> ABI.FunctionSelector.decode("paw(string[2])")
%ABI.FunctionSelector{
  function: "paw",
  types: [
    {:array, :string, 2}
  ]
}

iex> ABI.FunctionSelector.decode("shake((string))")
%ABI.FunctionSelector{
  function: "shake",
  types: [
    {:tuple, [:string]}
  ]
}
Link to this function decode_raw(type_string)

Decodes the given type-string as a simple array of types.

Examples

iex> ABI.FunctionSelector.decode_raw("string,uint256")
[:string, {:uint, 256}]
Link to this function decode_type(els)
Link to this function encode(function_selector)

Encodes a function call signature.

Examples

iex> ABI.FunctionSelector.encode(%ABI.FunctionSelector{
...>   function: "bark",
...>   types: [
...>     {:uint, 256},
...>     :bool,
...>     {:array, :string},
...>     {:array, :string, 3},
...>     {:tuple, [{:uint, 256}, :bool]}
...>   ]
...> })
"bark(uint256,bool,string[],string[3],(uint256,bool))"
Link to this function is_dynamic?(arg1)
is_dynamic?(ABI.FunctionSelector.type()) :: boolean()