//// 由 erlgen 发射——词表: protocol/etf_tags.toml——勿手改
//// 再生: moon run /home/thy/bitbang/erlgen/cmd --
///|
/// tag 词表常量(external.h 权威——数据面;真源=词表 TOML)
/// IEEE double, 8-byte big-endian
pub const TAG_NEW_FLOAT : Int32 = 70
///|
/// pid ext, node/id/serial/creation u32
pub const TAG_NEW_PID : Int32 = 88
///|
/// reference ext, creation u32('Z' 形)
pub const TAG_NEW_REFERENCE : Int32 = 90
///|
/// u8
pub const TAG_SMALL_INTEGER : Int32 = 97
///|
/// i32 big-endian
pub const TAG_INTEGER : Int32 = 98
///|
/// 31-byte string form (legacy)
pub const TAG_FLOAT_EXT : Int32 = 99
///|
/// latin-1 atom, len u16
pub const TAG_ATOM_EXT : Int32 = 100
///|
/// arity u8
pub const TAG_SMALL_TUPLE : Int32 = 104
///|
/// arity u32
pub const TAG_LARGE_TUPLE : Int32 = 105
///|
pub const TAG_NIL : Int32 = 106
///|
/// latin-1 byte string, len u16
pub const TAG_STRING : Int32 = 107
///|
/// len u32 + tail
pub const TAG_LIST : Int32 = 108
///|
/// len u32
pub const TAG_BINARY : Int32 = 109
///|
/// digit count u8
pub const TAG_SMALL_BIG : Int32 = 110
///|
pub const TAG_MAP : Int32 = 116
///|
/// len u16
pub const TAG_ATOM_UTF8 : Int32 = 118
///|
/// len u8(external.c get_int8)
pub const TAG_SMALL_ATOM_UTF8 : Int32 = 119
///|
/// cix u8('D' 段头语境;A8 全规格)
pub const TAG_ATOM_CACHE_REF : Int32 = 82
///|
pub const TAG_NEW_PORT : Int32 = 89
// 120 'x':OTP26 port 扩展形(真帧勘定 2026-11-07 beam-rpc 勘形臂 dump——
// node atom+id u32+serial u32+creation u32;外证=本机 erl OTP25
// term_to_binary(port) 同 tag 120 但 8B 形,OTP26 带 serial 12B)
///|
pub const TAG_NEW_PORT_V2 : Int32 = 120
///|
/// 封闭查表:tag code → 词表名(未知 None——负例诚实拒)
pub fn tag_name_of(code : Int32) -> String? {
match code {
70 => Some("TAG_NEW_FLOAT")
88 => Some("TAG_NEW_PID")
90 => Some("TAG_NEW_REFERENCE")
97 => Some("TAG_SMALL_INTEGER")
98 => Some("TAG_INTEGER")
99 => Some("TAG_FLOAT_EXT")
100 => Some("TAG_ATOM_EXT")
104 => Some("TAG_SMALL_TUPLE")
105 => Some("TAG_LARGE_TUPLE")
106 => Some("TAG_NIL")
107 => Some("TAG_STRING")
108 => Some("TAG_LIST")
109 => Some("TAG_BINARY")
110 => Some("TAG_SMALL_BIG")
116 => Some("TAG_MAP")
118 => Some("TAG_ATOM_UTF8")
119 => Some("TAG_SMALL_ATOM_UTF8")
82 => Some("TAG_ATOM_CACHE_REF")
89 => Some("TAG_NEW_PORT")
120 => Some("TAG_NEW_PORT_V2")
_ => None
}
}
///|
/// 词表全表 [(code, name)](封闭性罐/工具面用;词表行序)
pub fn all_tags() -> Array[(Int32, String)] {
[
(70, "TAG_NEW_FLOAT"),
(88, "TAG_NEW_PID"),
(90, "TAG_NEW_REFERENCE"),
(97, "TAG_SMALL_INTEGER"),
(98, "TAG_INTEGER"),
(99, "TAG_FLOAT_EXT"),
(100, "TAG_ATOM_EXT"),
(104, "TAG_SMALL_TUPLE"),
(105, "TAG_LARGE_TUPLE"),
(106, "TAG_NIL"),
(107, "TAG_STRING"),
(108, "TAG_LIST"),
(109, "TAG_BINARY"),
(110, "TAG_SMALL_BIG"),
(116, "TAG_MAP"),
(118, "TAG_ATOM_UTF8"),
(119, "TAG_SMALL_ATOM_UTF8"),
(82, "TAG_ATOM_CACHE_REF"),
(89, "TAG_NEW_PORT"),
(120, "TAG_NEW_PORT_V2"),
]
}