Module evmil::util

source ·
Expand description

Various utilities required by other modules.

Structs§

  • Utility for pulling out structured data from a bytestream. This is primarily used for decoding EOF bytecode contracts.
  • A utility for encoding structured data into bytes.
  • Represents a bidirectional directed graph over a sequence of nodes. Edges can be added/removed, and iterated over in the forwards or backwards direction. The underlying datastructure is that of an adjacency list.
  • An iterator over the edges of a graph which iterates over the incoming or outgoing edges of the graph.
  • Represents an interval of values x..y (much like Range<usize>) which supports various arithmetic operations.
  • A vector where all elements are maintained in sorted order (without duplicates). This allows for efficient lookup and duplicate removal.

Constants§

Traits§

  • Defines an abstract value which has a specific BOTTOM value in the lattice.
  • A trait which allows (when possible) an abstract value to be extracted into a concrete value. This makes sense only when that abstract value represents a single concrete value.
  • A simple trait allowing something to be converted from a hex string.
  • An abstract value can be used to represent one or more concrete values.
  • A partially ordered set which has a join for any two elements, and includes both a bottom (i.e. least) and top (i.e. most) elements. These are respectively below (above) every other element.
  • A partially ordered set which has a join for any two elements, and includes a bottom (i.e. least) element which is below every other element. For example, the integer sets meets these requirements where the join operation is set union, and bottom is the empty set.
  • Identifies type which have a maximum value (e.g. u32, etc).
  • Identifies type which have a minimum value (e.g. u32, etc).
  • Abstracts a sequence of elements. This is similar to a slice, except that it may not represent elements actually stored consecutively in memory. In other words, elements can be constructed via computation on-the-fly.
  • A simple trait allowing something to be converted into a hex string.
  • Defines an abstract value which has a specific TOP value in the lattice.

Functions§

  • Compute the set of nodes dominated by each node in a given graph.
  • Convert a sequence of bytes in big endian form into a 128bit value.
  • Convert a sequence of digits into a u128.
  • Convert a 128bit value into the smallest possible byte sequence (in big endian order).
  • Compute the (forward) transitive closure of a graph. That is, for each node, the set of nodes it can reach in one (or more) hops.

Type Aliases§