---
name: "atdgen"
section: "1"
platform: "linux"
package: "libatdgen-ocaml-dev"
version: "2.16.0-2+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/atdgen"
---

# atdgen(1)

ATD compiler and code generator

## NAME

atdgen - ATD compiler and code generator

## SYNOPSIS

**atdgen \[*options...*\] \[*atd-file*\]**

## DESCRIPTION

**atdgen** reads **ATD** type definitions and generates **OCaml** code (both ml and mli files) for

- —

  type definitions (option *-t)*

- —

  serializers and deserializers for Biniou (option  *-b)*

- —

  serializers and deserializers for JSON (option *-j)*

- —

  record-creating functions supporting default fields (option *-v)*

- —

  user-specified data validators (option *-v)*

If no mode option (*-t*, *-b*, *-j* or *-v*) is given, then *-t -b* is assumed. Unless  *-o* is present, the *\<prefix\>* for the generated files is derived from the  *atd-file* argument. If the *atd-file* argument is omitted, **atdgen** reads **ATD** sources from standard input, if additionally *-o* is missing, it behaves as if *-o -* was given.

## OPTIONS

- **-t**

  Produce files  *\<prefix\>\_t.mli* and *\<prefix\>\_t.ml* containing OCaml type definitions for the **ATD** input

- **-b**

  Produce files *\<prefix\>\_b.mli* and *\<prefix\>\_b.ml* containing **OCaml** serializers and deserializers for the  **Biniou** data format

- **-j**

  produce files *\<prefix\>\_j.mli* and *\<prefix\>\_j.ml* containing **OCaml** serializers and deserializers for the **JSON** data format

- **-v**

  Produce files *\<prefix\>\_v.mli* and *\<prefix\>\_v.ml* containing OCaml functions for creating records and validators, see also option *-validate.*

- **-dep**

  Output dependencies in makefile-format for all possible **atdgen** output files and exit

- **-list**

  Output a space-separated list of all possible **atdgen** output files and exit

- **-o \<prefix\>**

  set the  *\<prefix\>* for the options *-t, -b and -j.* If *\<prefix\>* is *-,* **atdgen** writes code in the form of

  struct ... end : sig ... end

  to standard output.

- **-biniou**

  \[deprecated\] same as  *-t -b,* i.e., produce serializers and deserializers for Biniou and **OCaml** type definitions (default)

- **-json**

  \[deprecated\] same as *-t -j,* i.e., produce serializers and deserializers for JSON and **OCaml** type definitions.

- **-j-std**

  standard **JSON:** Convert tuples and variants into standard **JSON** and refuse to print NaN and infinities. This option implies *-json* unless another mode is specified.

- **-std-json**

  \[deprecated\] same as *-j-std*

- **-j-pp \<func\>**

  Apply the **OCaml** function *\<func\>* of type (string -\> string) to the input of each \*\_of\_string function generated by atdgen (JSON mode). (This was intended for UTF-8 validation of the input which is not performed by atdgen.)

- **-j-defaults**

  Output **JSON** record fields even if their value is known to be the default.

- **-j-strict-fields**

  Call  *!Ag\_util.Json.unknown\_field\_handler* for every unknown **JSON** field found in the input instead of simply skipping them. The initial value of this reference prints a message and raises a *Failure* exception.

- **-j-custom-fields \<func\>**

  Call function *\<func\>* of type (string -\> unit) for every unknown **JSON** field found in the input instead of simply skipping them. See also *-j-strict-fields.*

- **-validate**

  \[deprecated\] same as *-t -v,* Produce data validators from \<ocaml validator="x"\> annotations where x is a user-written validator to be applied on a specific node. This is typically used in conjunction with  *-extend* because user-written validators depend on the type definitions.

- **-extend MODULE**

  Assume that all type definitions are provided by the specified module unless otherwise annotated. Type aliases are created for each type, e.g. type t = Module.t

- **-open MODULE1,MODULE2,...**

  List of modules to open (comma-separated or space-separated)

- **-nfd**

  Do not dump **OCaml** function definitions

- **-ntd**

  Do not dump **OCaml** type definitions

- **-pos-fname FILENAME**

  Source file name to use for error messages (default: input name)

- **-pos-lnum LINENUM**

  Source line number of the first line of the input (default: 1)

- **-rec**

  Keep **OCaml** type definitions mutually recursive

- **-version**

  print version and exit

- **-help \| --help**

  Display this list of options

## SEE ALSO

- The **Atdgen** reference manual, */usr/share/doc/libatdgen-ocaml-dev/atdgen-manual.{html,pdf}*

  - The **Atdgen** tutorial on the **Atdgen** website, *http://mjambon.com/atdgen*

  ## AUTHOR

This manual page was written by Sylvain Le Gall \<gildor@debian.org\> and Hendrik Tews \<hendrik@askra.de\>, specifically for the Debian project (and may be used by others).
