查看源代码 diameter_make (diameter v2.4.1)
Diameter 字典编译。
函数 codec/2
用于将 diameter 字典文件 编译为 Erlang 源代码。生成的源代码实现了 diameter 所需的接口,用于编码和解码字典的消息和 AVP。
实用程序 diameterc(1) 提供了另一种编译接口。
错误
未识别的选项将被静默忽略。
另请参阅
摘要
类型
函数
-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
。返回时,结果按相应的格式选项的顺序排列。如果未指定,格式选项默认为erl
和hrl
(按此顺序)。parse
格式是一种内部表示,可以传递给flatten/1
和format/1
,而forms
格式可以传递给compile:forms/2
。erl
和hrl
格式作为 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
将返回的错误原因转换为可读的字符串。
重新构建一个已解析的字典,如 codec/2
返回的那样,而不使用 @inherits
。也就是说,构造一个等效的字典,其中所有 AVP 都在字典本身中定义。返回值也是一个已解析的字典。
将已解析的字典(如 codec/2
返回的那样)转换回字典格式。
将 codec/2
返回的错误原因转换为可读的字符串。