查看源代码 diameter_make (diameter v2.4.1)

Diameter 字典编译。

函数 codec/2 用于将 diameter 字典文件 编译为 Erlang 源代码。生成的源代码实现了 diameter 所需的接口,用于编码和解码字典的消息和 AVP。

实用程序 diameterc(1) 提供了另一种编译接口。

错误

未识别的选项将被静默忽略。

另请参阅

diameterc(1), diameter_dict(4)

摘要

函数

编译单个字典文件。

重新构建一个已解析的字典,如 codec/2 返回的那样,而不使用 @inherits。也就是说,构造一个等效的字典,其中所有 AVP 都在字典本身中定义。返回值也是一个已解析的字典。

将已解析的字典(如 codec/2 返回的那样)转换回字典格式。

codec/2 返回的错误原因转换为可读的字符串。

类型

链接到此类型

dict()

查看源代码 (未导出) (自 OTP R14B03 起)
-type dict() :: iolist() | binary() | parsed().
链接到此类型

opt()

查看源代码 (自 OTP R14B03 起)
-type opt() ::
          {include | outdir | name | prefix | inherits, string()} |
          return | verbose | parse | forms | erl | hrl.
链接到此类型

parsed()

查看源代码 (未导出) (自 OTP R14B03 起)
-type parsed() :: list().

函数

链接到此函数

codec(File, Opts)

查看源代码 (自 OTP R15B 起)
-spec codec(File, [opt()]) -> ok | {ok, list()} | {error, Reason}
               when File :: dict() | {path, file:name_all()}, Reason :: string().

编译单个字典文件。

输入 File 可以是路径或字面字典,换行符(ascii NL)或回车符(ascii CR)的存在标识后者。Opt 确定结果的格式以及是否将其写入文件或返回,并且可以具有以下类型。

  • parse | forms | erl | hrl - 指定输出格式。输出是返回还是写入文件取决于是否指定了选项 return。写入文件时,生成的文件将分别具有扩展名 .D.F.erl.hrl,如果输入字典是字面值且未指定 @name,则基本名称默认为 dictionary。返回时,结果按相应的格式选项的顺序排列。如果未指定,格式选项默认为 erlhrl(按此顺序)。

    parse 格式是一种内部表示,可以传递给 flatten/1format/1,而 forms 格式可以传递给 compile:forms/2erlhrl 格式作为 iolist 返回。

  • {include, string()} - 将指定的目录添加到代码路径。用于指向从继承的字典编译的 beam 文件,@inherits 在字典文件中创建一个 beam 依赖项,而不是 erl/hrl 依赖项。

    可以指定多个 include 选项。

  • {outdir, string()} - 将生成的源代码写入指定目录。默认为当前工作目录。如果指定了选项 return,则无效。

  • return - 返回 {ok, [Out]} 元组中的结果,而不是写入文件并返回 ok

  • {name|prefix, string()} - 在编译之前转换输入字典,将 @name@prefix 设置为指定的字符串。

  • {inherits, string()} - 在编译之前转换输入字典,附加指定字符串的 @inherits

    两种形式具有特殊含义

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

    第一种形式的效果是清除任何先前的继承,第二种形式的效果是将先前的 Prev 继承替换为 Mod 的继承。这允许在不修改文件本身的情况下更改输入字典的语义。

    可以指定多个 inherits 选项。

请注意,字典的 @name 以及 outdir 选项确定未指定 return 选项时的输出路径。字面输入字典的 @name 默认为 dictionary

可以使用 format_error/1 将返回的错误原因转换为可读的字符串。

链接到此函数

flatten(Parsed)

查看源代码 (自 OTP R16B03 起)
-spec flatten(parsed()) -> parsed().

重新构建一个已解析的字典,如 codec/2 返回的那样,而不使用 @inherits。也就是说,构造一个等效的字典,其中所有 AVP 都在字典本身中定义。返回值也是一个已解析的字典。

链接到此函数

format(Parsed)

查看源代码 (自 OTP R16B03 起)
-spec format(parsed()) -> iolist().

将已解析的字典(如 codec/2 返回的那样)转换回字典格式。

链接到此函数

format_error(Reason)

查看源代码 (自 OTP 17.0 起)
-spec format_error(Reason) -> FormattedReason when Reason :: term(), FormattedReason :: string().

codec/2 返回的错误原因转换为可读的字符串。