# `F3.Decoder.Native`

Calls the dirty-CPU NIF for one encoding unit.

The NIF is loaded only when `F3_BUILD_NATIVE=1` was set at compile time.
Otherwise `decode/3` returns `:native_unavailable` and does not read a file.
A panic inside the NIF comes back as `{:error, %F3.Error{category: :corrupt}}`.

# `decode`

```elixir
@spec decode(binary(), atom(), atom()) ::
  {:ok, F3.Column.t()} | {:error, F3.Error.t()}
```

Decodes `bytes` after applying `compression`, as `type`.

Without the NIF this returns `:native_unavailable` and does not raise.
A term that is not a binary or an atom raises `FunctionClauseError`.

## Examples

    iex> {:error, error} = F3.Decoder.Native.decode(<<>>, :uncompressed, :i64)
    iex> error.category
    :native_unavailable

---

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