# Unifex v1.2.5 - Table of Contents

> Tool for generating interfaces between native C code and Elixir

## Pages

- [Unifex](readme.md)
- [LICENSE](license.md)
- [Creating Unifex Natives](creating_unifex_natives.md)
- [Creating Unifex NIF](creating_unifex_nif.md)
- [Supported types](supported_types.md)

## Modules

- [Unifex](Unifex.md): Implementation of `Bundlex.Preprocessor`.
- [Unifex.CNode](Unifex.CNode.md): Wraps Bundlex.CNode functionalities to support Unifex-specific CNode behaviours

- [Unifex.CodeGenerator](Unifex.CodeGenerator.md): Behaviour for code generation.

- [Unifex.CodeGenerator.BaseType](Unifex.CodeGenerator.BaseType.md): Behaviour and abstraction over type-specific code generation.
- [Unifex.CodeGenerator.Utils](Unifex.CodeGenerator.Utils.md): Utilities for code generation.

- [Unifex.Loader](Unifex.Loader.md): This module allows to generate definitions for native functions described in Unifex specs.
- [Unifex.Specs](Unifex.Specs.md): Module that handles parsing Unifex specs for native boilerplate code generation.
- [Unifex.Specs.DSL](Unifex.Specs.DSL.md): Module exporting macros that can be used to define Unifex specs.

- CodeGenerators
  - [Unifex.CodeGenerators.CNode](Unifex.CodeGenerators.CNode.md): Generates C node boilerplate based on `Unifex.Specs`.

  - [Unifex.CodeGenerators.NIF](Unifex.CodeGenerators.NIF.md): Generates NIF boilerplate based on `Unifex.Specs`.

- BaseTypes
  - [Unifex.CodeGenerator.BaseTypes.Atom](Unifex.CodeGenerator.BaseTypes.Atom.md): Module implementing `Unifex.CodeGenerator.BaseType` behaviour for atoms.
  - [Unifex.CodeGenerator.BaseTypes.Bool](Unifex.CodeGenerator.BaseTypes.Bool.md): Module implementing `Unifex.CodeGenerator.BaseType` behaviour for boolean atoms.
  - [Unifex.CodeGenerator.BaseTypes.Default](Unifex.CodeGenerator.BaseTypes.Default.md): Default `Unifex.CodeGenerator.BaseType` implementation for all types.
  - [Unifex.CodeGenerator.BaseTypes.Enum](Unifex.CodeGenerator.BaseTypes.Enum.md): Module implementing `Unifex.CodeGenerator.BaseType` behaviour for C Enums.
  - [Unifex.CodeGenerator.BaseTypes.Float](Unifex.CodeGenerator.BaseTypes.Float.md): Module implementing `Unifex.CodeGenerator.BaseType` behaviour for floats.
  - [Unifex.CodeGenerator.BaseTypes.Int](Unifex.CodeGenerator.BaseTypes.Int.md): Module implementing `Unifex.CodeGenerator.BaseType` behaviour for integers.
  - [Unifex.CodeGenerator.BaseTypes.Int64](Unifex.CodeGenerator.BaseTypes.Int64.md): Module implementing `Unifex.CodeGenerator.BaseType` behaviour for 64-bit integer.
  - [Unifex.CodeGenerator.BaseTypes.List](Unifex.CodeGenerator.BaseTypes.List.md): Module implementing `Unifex.CodeGenerator.BaseType` behaviour for lists.
  - [Unifex.CodeGenerator.BaseTypes.Payload](Unifex.CodeGenerator.BaseTypes.Payload.md): Module implementing `Unifex.CodeGenerator.BaseType` behaviour for payloads.
  - [Unifex.CodeGenerator.BaseTypes.Pid](Unifex.CodeGenerator.BaseTypes.Pid.md): Module implementing `Unifex.CodeGenerator.BaseType` behaviour for Erlang PIDs.
  - [Unifex.CodeGenerator.BaseTypes.State](Unifex.CodeGenerator.BaseTypes.State.md): Module implementing `Unifex.CodeGenerator.BaseType` behaviour for Unifex state.
  - [Unifex.CodeGenerator.BaseTypes.String](Unifex.CodeGenerator.BaseTypes.String.md): Module implementing `Unifex.CodeGenerator.BaseType` behaviour for strings.
  - [Unifex.CodeGenerator.BaseTypes.Struct](Unifex.CodeGenerator.BaseTypes.Struct.md): Module implementing `Unifex.CodeGenerator.BaseType` behaviour for structs.
  - [Unifex.CodeGenerator.BaseTypes.Uint64](Unifex.CodeGenerator.BaseTypes.Uint64.md): Module implementing `Unifex.CodeGenerator.BaseType` behaviour for 64-bit unsigned integer.
  - [Unifex.CodeGenerator.BaseTypes.Unsigned](Unifex.CodeGenerator.BaseTypes.Unsigned.md): Module implementing `Unifex.CodeGenerator.BaseType` behaviour for unsigned int.

## Mix Tasks

- [mix compile.unifex](Mix.Tasks.Compile.Unifex.md): Generates native boilerplate code for all the `.spec.exs` files found in `c_src` dir

## See Also

- [Membrane Framework AI Skill](https://hexdocs.pm/membrane_core/skill.md)
- [Membrane Core](https://hexdocs.pm/membrane_core/llms.txt)
