Diameter dictionary compilation.

The function codec/2 is used to compile a diameter dictionary into Erlang source. The resulting source implements the interface diameter required to encode and decode the dictionary's messages and AVP's.

The utility diameterc(1) provides an alternate compilation interface.


codec(Path::string(), [Opt]) -> ok | {error, Reason}

Compile a single dictionary file to Erlang source. Opt can have the following types.

{include, string()}

Prepend the specified directory to the code path. Use to point at beam files compiled from inherited dictionaries, @inherits in a dictionary file creating a beam dependency, not an erl/hrl dependency.

Multiple include options can be specified.

{outdir, string()}

Write generated source to the specified directory. Defaults to the current working directory.

{name|prefix, string()}

Transform the input dictionary before compilation, setting @name or @prefix to the specified string.

{inherits, string()}

Transform the input dictionary before compilation, appending @inherits of the specified string.

Two forms of @inherits have special meaning:

{inherits, "-"}
{inherits, "Prev/Mod"}

The first has the effect of clearing any previous inherits, the second of replacing a previous inherits of Prev to one of Mod. This allows the semantics of the input dictionary to be changed without modifying the file itself.

Multiple inherits options can be specified.


All options are string-valued. In particular, it is not currently possible to specify an @inherits module as an atom(), or a path as an arbitrary file:name()