erlang:ei_get_type():'type'字段定义的常量在哪里?

时间:2009-09-28 18:10:30

标签: erlang erl-interface

我正在尝试使用 ei_get_type()ei),但我无法找到“类型”字段的记录位置。我查看了 ei.h ,但我能找到的是一个以“ERL _”开头的常量列表。

#define ERL_SMALL_INTEGER_EXT 'a'
#define ERL_INTEGER_EXT       'b'
#define ERL_FLOAT_EXT         'c'
#define ERL_ATOM_EXT          'd'
#define ERL_REFERENCE_EXT     'e'
#define ERL_NEW_REFERENCE_EXT 'r'
#define ERL_PORT_EXT          'f'
#define ERL_PID_EXT           'g'
#define ERL_SMALL_TUPLE_EXT   'h'
#define ERL_LARGE_TUPLE_EXT   'i'
#define ERL_NIL_EXT           'j'
#define ERL_STRING_EXT        'k'
#define ERL_LIST_EXT          'l'
#define ERL_BINARY_EXT        'm'
#define ERL_SMALL_BIG_EXT     'n'
#define ERL_LARGE_BIG_EXT     'o'
#define ERL_NEW_FUN_EXT   'p'
#define ERL_FUN_EXT           'u'

这是正确的清单吗?我不确定,因为 er_get_type()的原型对于类型字段有* int **而 ei.h 文件定义 char 以上常数。

注意:'erl_interface'包中使用的其他'常量'未在此处列出。

2 个答案:

答案 0 :(得分:2)

根据Erlang中的其余c代码(odbcserver.c,show_msg.c),您应该将该值与之比较。

显然,这些是外部二进制格式用于标记元素类型的字节值,putget.h中的get8宏只返回此值。

答案 1 :(得分:0)

我几个月来一直使用ei来编码/解码来自cnode的erlang术语,你提到的常量似乎没问题。我正在使用的是:

LONG - >一个

ATOM - > d

TUPLE - > ħ

EMPTY_LIST - > Ĵ

STRING - > ķ

列表 - >升

BINARY - >米

在我要解析的消息中,我只收到这些类型。