# `TextFSM.Engine.Memory`
[🔗](https://github.com/amitbashan/textfsm/blob/main/lib/textfsm/engine/memory.ex#L1)

# `finalized_table`

```elixir
@type finalized_table() :: %{required(value_name()) =&gt; [finalized_value()]}
```

# `finalized_value`

```elixir
@type finalized_value() :: nil | String.t() | [String.t()]
```

# `key`

```elixir
@type key() :: row()
```

# `key_group`

```elixir
@type key_group() :: MapSet.t(key())
```

# `key_group_to_pending_rows`

```elixir
@type key_group_to_pending_rows() :: %{required(key_group()) =&gt; [row()]}
```

# `key_group_to_row_idx`

```elixir
@type key_group_to_row_idx() :: %{required(key_group()) =&gt; row_idx()}
```

# `match`

```elixir
@type match() :: nil | String.t()
```

# `row`

```elixir
@type row() :: %{required(value_name()) =&gt; value()}
```

# `row_idx`

```elixir
@type row_idx() :: non_neg_integer()
```

# `t`

```elixir
@type t() :: %TextFSM.Engine.Memory{
  accumulator: row(),
  key_group_to_pending_rows: term(),
  key_group_to_row_idx: key_group_to_row_idx(),
  match_constraints: TextFSM.Engine.MatchConstraints.t(),
  num_rows: non_neg_integer(),
  table: table()
}
```

# `table`

```elixir
@type table() :: %{required(value_name()) =&gt; [value()]}
```

# `value`

```elixir
@type value() :: nil | :fillup | String.t() | [String.t()]
```

# `value_name`

```elixir
@type value_name() :: String.t()
```

# `clear`

```elixir
@spec clear(t()) :: t()
```

# `clear_all`

```elixir
@spec clear_all(t()) :: t()
```

# `collect`

```elixir
@spec collect(t(), value_name(), match()) :: t()
```

# `finalize`

```elixir
@spec finalize(t()) :: finalized_table()
```

# `new`

```elixir
@spec new([TextFSM.Template.ValueDefinition.t()]) :: t()
```

# `record`

```elixir
@spec record(t(), boolean()) :: t()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
