Hypex.Register.Array (Hypex v2.1.0)

View Source

A Hypex.Register implementation using an Erlang :array.

Arrays offer the best average throughput and scale well to various widths and cardinalities. For this reason this register is the default chosen when non is explicitly requested.

This register will scale to many use cases, and should be a solid choice for many users as a balance of memory, throughput and flexibility.

Recommended for general usage or when traffic patterns are less defined.

Summary

Functions

Retrieve a specific bit from a register.

Initialize an empty array register of a given width.

Merge together two registers of the same width and type.

Set a specific bit in a register.

Run a reduction over the inner bits of a register.

Types

t()

@type t() :: :array.array(number())

Functions

get(register, index, width)

@spec get(t(), index :: number(), width :: number()) :: result :: number()

Retrieve a specific bit from a register.

init(width)

@spec init(width :: number()) :: t()

Initialize an empty array register of a given width.

merge(left, right)

@spec merge(left :: t(), right :: t()) :: register :: t()

Merge together two registers of the same width and type.

put(register, index, width, value)

@spec put(t(), index :: number(), width :: number(), value :: number()) :: t()

Set a specific bit in a register.

reduce(register, width, acc, fun)

@spec reduce(t(), width :: number(), accumulator :: any(), (number(), any() -> any())) ::
  accumulator :: any()

Run a reduction over the inner bits of a register.