Transmit_as和Represent_as
Transmit_as和represent_as共享同一布局,但前导令牌除外;令牌读取FC_TRANSMIT_AS或FC_REPRESENT_AS,但基础代码很常见。
说明具有以下布局:
FC_TRANSMIT_AS | FC_REPRESENT_AS
flags<1>
quintuple_index<2>
presented_type_memory_size<2>
transmitted_type_buffer_size<2>
transmitted_type_offset<2>
<1 个> 字节的标志由上旗小号和下对齐方式小数部分组成。
对齐键保持传输类型的线对齐方式。 当缓冲区大小调整和使用格式代码中的传输类型大小时,这是必需的。
标志可具有以下标志:
#define PRESENTED_TYPE_IS_ARRAY 0x10
#define PRESENTED_TYPE_ALIGN_4 0x20
#define PRESENTED_TYPE_ALIGN_8 0x40
PRESENTED_TYPE_IS_ARRAY标志将顶级传输标记为(或表示为)参数,作为一个内容数组并传递的值。 –Oi 解释器使用此标志单步执行此类参数(这实际上是堆栈上的指针,而不是数组)。 另外两个标志也仅在以前的解释器中使用,以在堆栈上的呈现类型上正确执行步骤。
quintuple_index<2> 是回调例程四元(这实际上是四倍)函数的索引。 表通常以和表示方式传输,并且例程的位置有明显的映射,因为相同的入口点服务以代码的形式传输并表示代码。 映射from_local => to_xmit,to_local => from_xmit,free_inst => free_xmit,free_local => free_inst。
presented_type_memory_size<2> 始终为呈现/本地类型提供大小,包括未知表示为类型。
当大小不同或实际固定大小时,transmitted_type_buffer_size<2> 为零。 这是一种优化,用于在调整缓冲区大小时跳过某些回调。
transmitted_type_offset<2> 是传输的类型格式字符串的常规相对类型偏移量。