# kiwi_codec v0.1.1 - Table of Contents

> Pure Elixir codec for Kiwi schema binary messages

## Pages

- [KiwiCodec](readme.md)
- [Changelog](changelog.md)

## Modules

- [KiwiCodec](KiwiCodec.md): Pure Elixir codec for Kiwi schema binary messages.
- [KiwiCodec.Compiler](KiwiCodec.Compiler.md): Compiles `.kiwi` schema text into Elixir modules or source files.

- [KiwiCodec.Container](KiwiCodec.Container.md): Helpers for Kiwi chunk containers with an 8-byte magic and little-endian chunk lengths.

- [KiwiCodec.DSL](KiwiCodec.DSL.md): Compile-time DSL behind `use KiwiCodec`.
- [KiwiCodec.Decoder](KiwiCodec.Decoder.md): Decodes Kiwi wire binaries into generated Kiwi structs.
- [KiwiCodec.Encoder](KiwiCodec.Encoder.md): Encodes generated Kiwi structs into Kiwi wire iodata.
- [KiwiCodec.FieldProps](KiwiCodec.FieldProps.md): Metadata for one Kiwi field in a generated module.

- [KiwiCodec.Generator](KiwiCodec.Generator.md): Generates Elixir modules from parsed Kiwi schemas.

- [KiwiCodec.Inspect](KiwiCodec.Inspect.md): Shared `Inspect` implementation for generated Kiwi structs.

- [KiwiCodec.MessageProps](KiwiCodec.MessageProps.md): Compiled Kiwi definition metadata for generated modules.

- [KiwiCodec.Runtime](KiwiCodec.Runtime.md): Interpreter for parsed Kiwi schemas without generated modules.
- [KiwiCodec.RustlerGenerator](KiwiCodec.RustlerGenerator.md): Generates Rustler decoder code from Kiwi schemas for RustQ manifests.
- [KiwiCodec.RustlerGenerator.Rusty](KiwiCodec.RustlerGenerator.Rusty.md): Rusty-Elixir macro helpers used by `KiwiCodec.RustlerGenerator`.
- [KiwiCodec.Schema](KiwiCodec.Schema.md): Parsed Kiwi schema.

- [KiwiCodec.Schema.Binary](KiwiCodec.Schema.Binary.md): Encoder and decoder for Kiwi's compact binary schema format.

- [KiwiCodec.Schema.Definition](KiwiCodec.Schema.Definition.md): Kiwi enum, struct, or message definition.

- [KiwiCodec.Schema.Field](KiwiCodec.Schema.Field.md): Kiwi schema field or enum member.

- [KiwiCodec.Schema.Parser](KiwiCodec.Schema.Parser.md): Parser for `.kiwi` schema text.

- [KiwiCodec.Schema.Parser.Token](KiwiCodec.Schema.Parser.Token.md): Source token with line and column information for schema parse errors.

- [KiwiCodec.TransformModule](KiwiCodec.TransformModule.md): Hook behaviour for custom Kiwi encode/decode normalization.
- [KiwiCodec.Wire](KiwiCodec.Wire.md): Kiwi primitive wire encoders and decoders.
- [KiwiCodec.Wire.Float](KiwiCodec.Wire.Float.md): Kiwi variable-length 32-bit float encoding.
- [KiwiCodec.Wire.Varint](KiwiCodec.Wire.Varint.md): Kiwi unsigned varint and zigzag signed integer encoding.

- Exceptions
  - [KiwiCodec.DecodeError](KiwiCodec.DecodeError.md): Raised when Kiwi wire data or binary schema data cannot be decoded.

  - [KiwiCodec.EncodeError](KiwiCodec.EncodeError.md): Raised when a value cannot be encoded as Kiwi wire data.

## Mix Tasks

- [mix kiwi.gen](Mix.Tasks.Kiwi.Gen.md): Generates Elixir modules from a `.kiwi` schema.

